Generated by Cython 0.29.2
Yellow lines hint at Python interaction.
Click on a line that starts with a "+" to see the C code that Cython generated for it.
Raw output: inference.c
+0001: from itertools import compress
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_compress); __Pyx_GIVEREF(__pyx_n_s_compress); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_compress); __pyx_t_2 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_compress); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_compress, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; /* … */ __pyx_t_7 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_7) < 0) __PYX_ERR(0, 1, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0002: from scipy import sparse
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_sparse); __Pyx_GIVEREF(__pyx_n_s_sparse); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_sparse); __pyx_t_1 = __Pyx_Import(__pyx_n_s_scipy, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_sparse); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_sparse, __pyx_t_2) < 0) __PYX_ERR(0, 2, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0003: from scipy.integrate import solve_ivp
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_solve_ivp); __Pyx_GIVEREF(__pyx_n_s_solve_ivp); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_solve_ivp); __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_integrate, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_solve_ivp, __pyx_t_1) < 0) __PYX_ERR(0, 3, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0004: from scipy.optimize import minimize, approx_fprime
__pyx_t_2 = PyList_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_minimize); __Pyx_GIVEREF(__pyx_n_s_minimize); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_minimize); __Pyx_INCREF(__pyx_n_s_approx_fprime); __Pyx_GIVEREF(__pyx_n_s_approx_fprime); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_approx_fprime); __pyx_t_1 = __Pyx_Import(__pyx_n_s_scipy_optimize, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_minimize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_minimize, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_approx_fprime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_approx_fprime, __pyx_t_2) < 0) __PYX_ERR(0, 4, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0005: from scipy.stats import lognorm
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_lognorm); __Pyx_GIVEREF(__pyx_n_s_lognorm); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_lognorm); __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_stats, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_lognorm, __pyx_t_1) < 0) __PYX_ERR(0, 5, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0006: import numpy as np
__pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0007: from scipy.interpolate import make_interp_spline
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_make_interp_spline); __Pyx_GIVEREF(__pyx_n_s_make_interp_spline); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_make_interp_spline); __pyx_t_1 = __Pyx_Import(__pyx_n_s_scipy_interpolate, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_make_interp_spline); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_make_interp_spline, __pyx_t_2) < 0) __PYX_ERR(0, 7, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0008: from scipy.misc import derivative
__pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_n_s_derivative); __Pyx_GIVEREF(__pyx_n_s_derivative); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_derivative); __pyx_t_2 = __Pyx_Import(__pyx_n_s_scipy_misc, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_derivative); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_derivative, __pyx_t_1) < 0) __PYX_ERR(0, 8, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0009: cimport numpy as np
0010: cimport cython
+0011: import time, sympy
__pyx_t_2 = __Pyx_Import(__pyx_n_s_time, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_time, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_Import(__pyx_n_s_sympy, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_sympy, __pyx_t_2) < 0) __PYX_ERR(0, 11, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+0012: from sympy import MutableDenseNDimArray as Array
__pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_n_s_MutableDenseNDimArray); __Pyx_GIVEREF(__pyx_n_s_MutableDenseNDimArray); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_MutableDenseNDimArray); __pyx_t_1 = __Pyx_Import(__pyx_n_s_sympy, __pyx_t_2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_MutableDenseNDimArray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_d, __pyx_n_s_Array, __pyx_t_2) < 0) __PYX_ERR(0, 12, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0013:
+0014: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L7_try_end;
__pyx_L2_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
goto __pyx_L1_error;
__pyx_L3_exception_handled:;
__Pyx_XGIVEREF(__pyx_t_3);
__Pyx_XGIVEREF(__pyx_t_4);
__Pyx_XGIVEREF(__pyx_t_5);
__Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
__pyx_L7_try_end:;
}
0015: # Optional support for nested sampling.
+0016: import nestle
__pyx_t_1 = __Pyx_Import(__pyx_n_s_nestle, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L2_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_d, __pyx_n_s_nestle, __pyx_t_1) < 0) __PYX_ERR(0, 16, __pyx_L2_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0017: except ImportError:
__pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError); if (__pyx_t_6) { __Pyx_AddTraceback("pyross.inference", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_7) < 0) __PYX_ERR(0, 17, __pyx_L4_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_7);
+0018: nestle = None
if (PyDict_SetItem(__pyx_d, __pyx_n_s_nestle, Py_None) < 0) __PYX_ERR(0, 18, __pyx_L4_except_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L3_exception_handled; } goto __pyx_L4_except_error; __pyx_L4_except_error:;
0019:
0020:
+0021: import pyross.deterministic
__pyx_t_7 = __Pyx_Import(__pyx_n_s_pyross_deterministic, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyross, __pyx_t_7) < 0) __PYX_ERR(0, 21, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
0022: cimport pyross.deterministic
+0023: import pyross.contactMatrix
__pyx_t_7 = __Pyx_Import(__pyx_n_s_pyross_contactMatrix, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyross, __pyx_t_7) < 0) __PYX_ERR(0, 23, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0024: from pyross.utils_python import minimization, nested_sampling
__pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_n_s_minimization); __Pyx_GIVEREF(__pyx_n_s_minimization); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_n_s_minimization); __Pyx_INCREF(__pyx_n_s_nested_sampling); __Pyx_GIVEREF(__pyx_n_s_nested_sampling); PyList_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_nested_sampling); __pyx_t_2 = __Pyx_Import(__pyx_n_s_pyross_utils_python, __pyx_t_7, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_minimization); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_minimization, __pyx_t_7) < 0) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_nested_sampling); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_d, __pyx_n_s_nested_sampling, __pyx_t_7) < 0) __PYX_ERR(0, 24, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
0025: from libc.math cimport sqrt, log, INFINITY
+0026: cdef double PI = 3.14159265359
__pyx_v_6pyross_9inference_PI = 3.14159265359;
0027:
0028:
+0029: DTYPE = np.float
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_float); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_DTYPE, __pyx_t_7) < 0) __PYX_ERR(0, 29, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0030: ctypedef np.float_t DTYPE_t
typedef __pyx_t_5numpy_float_t __pyx_t_6pyross_9inference_DTYPE_t;
0031: ctypedef np.uint8_t BOOL_t
0032:
0033: @cython.wraparound(False)
0034: @cython.boundscheck(False)
0035: @cython.cdivision(True)
0036: @cython.nonecheck(False)
+0037: cdef class SIR_type:
struct __pyx_obj_6pyross_9inference_SIR_type {
PyObject_HEAD
struct __pyx_vtabstruct_6pyross_9inference_SIR_type *__pyx_vtab;
Py_ssize_t nClass;
Py_ssize_t M;
Py_ssize_t steps;
Py_ssize_t dim;
Py_ssize_t vec_size;
double N;
PyArrayObject *beta;
PyArrayObject *gIa;
PyArrayObject *gIs;
PyArrayObject *fsa;
PyArrayObject *alpha;
PyArrayObject *fi;
PyArrayObject *CM;
PyArrayObject *dsigmadt;
PyArrayObject *J;
PyArrayObject *B;
PyArrayObject *J_mat;
PyArrayObject *B_vec;
PyArrayObject *U;
PyArrayObject *flat_indices1;
PyArrayObject *flat_indices2;
PyArrayObject *flat_indices;
PyArrayObject *rows;
PyArrayObject *cols;
PyObject *det_method;
PyObject *lyapunov_method;
PyObject *class_index_dict;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SIR_type {
PyArrayObject *(*_get_r_from_x)(struct __pyx_obj_6pyross_9inference_SIR_type *, PyArrayObject *);
double (*_penalty_from_negative_values)(struct __pyx_obj_6pyross_9inference_SIR_type *, PyArrayObject *);
double (*obtain_log_p_for_traj)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, int, PyObject *, PyObject *);
double (*obtain_log_p_for_traj_matrix_fltr)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, __Pyx_memviewslice, PyArrayObject *, double, Py_ssize_t, PyObject *, PyObject *, struct __pyx_opt_args_6pyross_9inference_8SIR_type_obtain_log_p_for_traj_matrix_fltr *__pyx_optional_args);
double (*obtain_log_p_for_traj_tangent_space)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, Py_ssize_t, PyObject *, PyObject *);
double (*log_cond_p)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*estimate_cond_mean_cov)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, double, PyObject *, PyObject *);
PyObject *(*estimate_dx_and_cov)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, double, PyObject *, PyObject *);
PyObject *(*obtain_full_mean_cov)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, Py_ssize_t, PyObject *, PyObject *, int __pyx_skip_dispatch);
PyObject *(*obtain_full_invcov)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, Py_ssize_t, PyObject *, PyObject *, int __pyx_skip_dispatch);
PyObject *(*obtain_full_mean_cov_tangent_space)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, Py_ssize_t, PyObject *, PyObject *, int __pyx_skip_dispatch);
PyObject *(*obtain_full_invcov_tangent_space)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, Py_ssize_t, PyObject *, PyObject *, int __pyx_skip_dispatch);
PyObject *(*find_fastest_growing_lin_mode)(struct __pyx_obj_6pyross_9inference_SIR_type *, double, PyObject *, int __pyx_skip_dispatch);
PyObject *(*obtain_time_evol_op)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, __Pyx_memviewslice, double, double, PyObject *, PyObject *);
PyObject *(*compute_dsigdt)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice);
PyObject *(*convert_vec_to_mat)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, int __pyx_skip_dispatch);
PyObject *(*lyapunov_fun)(struct __pyx_obj_6pyross_9inference_SIR_type *, double, __Pyx_memviewslice, PyObject *);
PyObject *(*compute_jacobian_and_b_matrix)(struct __pyx_obj_6pyross_9inference_SIR_type *, __Pyx_memviewslice, double, PyObject *, struct __pyx_opt_args_6pyross_9inference_8SIR_type_compute_jacobian_and_b_matrix *__pyx_optional_args);
};
static struct __pyx_vtabstruct_6pyross_9inference_SIR_type *__pyx_vtabptr_6pyross_9inference_SIR_type;
0038: '''Parent class for inference for all SIR-type classes listed below
0039:
0040: All subclasses use the same functions to perform inference, which are documented below.
0041: '''
0042:
0043: cdef:
+0044: readonly Py_ssize_t nClass, M, steps, dim, vec_size
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_6nClass_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_6nClass_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_6nClass___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_6nClass___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->nClass); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.nClass.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1M_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1M_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_1M___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_1M___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.M.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5steps_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5steps_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_5steps___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_5steps___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->steps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.steps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3dim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3dim_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3dim___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3dim___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.dim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8vec_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8vec_size_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_8vec_size___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_8vec_size___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->vec_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.vec_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0045: readonly double N
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1N_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1N_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_1N___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_1N___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->N); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.N.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0046: readonly np.ndarray beta, gIa, gIs, fsa
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4beta_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4beta_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_4beta___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_4beta___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->beta));
__pyx_r = ((PyObject *)__pyx_v_self->beta);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3gIa_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3gIa_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3gIa___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3gIa___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gIa));
__pyx_r = ((PyObject *)__pyx_v_self->gIa);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3gIs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3gIs_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3gIs___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3gIs___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gIs));
__pyx_r = ((PyObject *)__pyx_v_self->gIs);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3fsa_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3fsa_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3fsa___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3fsa___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->fsa));
__pyx_r = ((PyObject *)__pyx_v_self->fsa);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0047: readonly np.ndarray alpha, fi, CM, dsigmadt, J, B, J_mat, B_vec, U
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5alpha_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5alpha_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_5alpha___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_5alpha___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->alpha));
__pyx_r = ((PyObject *)__pyx_v_self->alpha);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_2fi_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_2fi_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_2fi___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_2fi___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->fi));
__pyx_r = ((PyObject *)__pyx_v_self->fi);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_2CM_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_2CM_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_2CM___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_2CM___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->CM));
__pyx_r = ((PyObject *)__pyx_v_self->CM);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8dsigmadt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_8dsigmadt_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_8dsigmadt___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_8dsigmadt___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->dsigmadt));
__pyx_r = ((PyObject *)__pyx_v_self->dsigmadt);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1J_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1J_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_1J___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_1J___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->J));
__pyx_r = ((PyObject *)__pyx_v_self->J);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1B_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1B_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_1B___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_1B___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->B));
__pyx_r = ((PyObject *)__pyx_v_self->B);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5J_mat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5J_mat_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_5J_mat___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_5J_mat___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->J_mat));
__pyx_r = ((PyObject *)__pyx_v_self->J_mat);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5B_vec_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5B_vec_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_5B_vec___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_5B_vec___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->B_vec));
__pyx_r = ((PyObject *)__pyx_v_self->B_vec);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1U_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_1U_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_1U___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_1U___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->U));
__pyx_r = ((PyObject *)__pyx_v_self->U);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0048: readonly np.ndarray flat_indices1, flat_indices2, flat_indices, rows, cols
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13flat_indices1_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13flat_indices1_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_13flat_indices1___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_13flat_indices1___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->flat_indices1));
__pyx_r = ((PyObject *)__pyx_v_self->flat_indices1);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13flat_indices2_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13flat_indices2_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_13flat_indices2___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_13flat_indices2___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->flat_indices2));
__pyx_r = ((PyObject *)__pyx_v_self->flat_indices2);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_12flat_indices_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_12flat_indices_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_12flat_indices___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_12flat_indices___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->flat_indices));
__pyx_r = ((PyObject *)__pyx_v_self->flat_indices);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4rows_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4rows_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_4rows___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_4rows___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->rows));
__pyx_r = ((PyObject *)__pyx_v_self->rows);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4cols_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_4cols_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_4cols___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_4cols___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->cols));
__pyx_r = ((PyObject *)__pyx_v_self->cols);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0049: readonly str det_method, lyapunov_method
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10det_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_10det_method_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_10det_method___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_10det_method___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->det_method);
__pyx_r = __pyx_v_self->det_method;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15lyapunov_method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15lyapunov_method_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_15lyapunov_method___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_15lyapunov_method___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->lyapunov_method);
__pyx_r = __pyx_v_self->lyapunov_method;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0050: readonly dict class_index_dict
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_16class_index_dict_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_16class_index_dict_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_16class_index_dict___get__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_16class_index_dict___get__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->class_index_dict);
__pyx_r = __pyx_v_self->class_index_dict;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0051:
0052:
+0053: def __init__(self, parameters, nClass, M, fi, N, steps, det_method, lyapunov_method):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_8SIR_type_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_8SIR_type_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_nClass = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_N = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_nClass,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_N,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_nClass)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 1); __PYX_ERR(0, 53, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 2); __PYX_ERR(0, 53, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 3); __PYX_ERR(0, 53, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 4); __PYX_ERR(0, 53, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 5); __PYX_ERR(0, 53, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 6); __PYX_ERR(0, 53, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, 7); __PYX_ERR(0, 53, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 53, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 8) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
}
__pyx_v_parameters = values[0];
__pyx_v_nClass = values[1];
__pyx_v_M = values[2];
__pyx_v_fi = values[3];
__pyx_v_N = values[4];
__pyx_v_steps = values[5];
__pyx_v_det_method = values[6];
__pyx_v_lyapunov_method = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 53, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type___init__(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_parameters, __pyx_v_nClass, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_8SIR_type___init__(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_nClass, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_N, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method) {
PyObject *__pyx_v_r = NULL;
PyObject *__pyx_v_c = NULL;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("pyross.inference.SIR_type.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_r);
__Pyx_XDECREF(__pyx_v_c);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0054: self.N = N
__pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_N); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 54, __pyx_L1_error) __pyx_v_self->N = __pyx_t_1;
+0055: self.M = M
__pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_M); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 55, __pyx_L1_error) __pyx_v_self->M = __pyx_t_2;
+0056: self.fi = fi
if (!(likely(((__pyx_v_fi) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fi, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 56, __pyx_L1_error) __pyx_t_3 = __pyx_v_fi; __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->fi); __Pyx_DECREF(((PyObject *)__pyx_v_self->fi)); __pyx_v_self->fi = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+0057: if steps < 4:
__pyx_t_3 = PyObject_RichCompare(__pyx_v_steps, __pyx_int_4, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 57, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 57, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(__pyx_t_4)) { /* … */ }
+0058: raise Exception('Steps must be at least 4 for internal spline interpolation.')
__pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple_, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_Raise(__pyx_t_3, 0, 0, 0); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(0, 58, __pyx_L1_error) /* … */ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_Steps_must_be_at_least_4_for_int); if (unlikely(!__pyx_tuple_)) __PYX_ERR(0, 58, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_);
+0059: self.steps = steps
__pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_steps); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 59, __pyx_L1_error) __pyx_v_self->steps = __pyx_t_2;
+0060: self.set_params(parameters)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+0061: self.det_method=det_method
if (!(likely(PyUnicode_CheckExact(__pyx_v_det_method))||((__pyx_v_det_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_det_method)->tp_name), 0))) __PYX_ERR(0, 61, __pyx_L1_error) __pyx_t_3 = __pyx_v_det_method; __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->det_method); __Pyx_DECREF(__pyx_v_self->det_method); __pyx_v_self->det_method = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
+0062: self.lyapunov_method=lyapunov_method
if (!(likely(PyUnicode_CheckExact(__pyx_v_lyapunov_method))||((__pyx_v_lyapunov_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_lyapunov_method)->tp_name), 0))) __PYX_ERR(0, 62, __pyx_L1_error) __pyx_t_3 = __pyx_v_lyapunov_method; __Pyx_INCREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->lyapunov_method); __Pyx_DECREF(__pyx_v_self->lyapunov_method); __pyx_v_self->lyapunov_method = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
0063:
+0064: self.dim = nClass*M
__pyx_t_3 = PyNumber_Multiply(__pyx_v_nClass, __pyx_v_M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_t_3); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 64, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_self->dim = __pyx_t_2;
+0065: self.nClass = nClass
__pyx_t_2 = __Pyx_PyIndex_AsSsize_t(__pyx_v_nClass); if (unlikely((__pyx_t_2 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 65, __pyx_L1_error) __pyx_v_self->nClass = __pyx_t_2;
+0066: self.vec_size = int(self.dim*(self.dim+1)/2)
__pyx_v_self->vec_size = ((__pyx_v_self->dim * (__pyx_v_self->dim + 1)) / 2);
+0067: self.CM = np.empty((M, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_M); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_M); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->CM)); __pyx_v_self->CM = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0;
+0068: self.dsigmadt = np.zeros((self.vec_size), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->vec_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 68, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->dsigmadt); __Pyx_DECREF(((PyObject *)__pyx_v_self->dsigmadt)); __pyx_v_self->dsigmadt = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
+0069: self.J = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_M); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_M); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 69, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->J); __Pyx_DECREF(((PyObject *)__pyx_v_self->J)); __pyx_v_self->J = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+0070: self.B = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_M); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_M); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->B); __Pyx_DECREF(((PyObject *)__pyx_v_self->B)); __pyx_v_self->B = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0;
+0071: self.J_mat = np.empty((self.dim, self.dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); __pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_v_self->J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->J_mat)); __pyx_v_self->J_mat = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0;
+0072: self.B_vec = np.empty((self.vec_size), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_empty); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->vec_size); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 72, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->B_vec)); __pyx_v_self->B_vec = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+0073: self.U = np.empty((self.dim, self.dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->U); __Pyx_DECREF(((PyObject *)__pyx_v_self->U)); __pyx_v_self->U = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
0074:
0075: # preparing the indices
+0076: self.rows, self.cols = np.triu_indices(self.dim)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 76, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 76, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 76, __pyx_L1_error) __pyx_L5_unpacking_done:; } if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 76, __pyx_L1_error) if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->rows); __Pyx_DECREF(((PyObject *)__pyx_v_self->rows)); __pyx_v_self->rows = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0; __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->cols); __Pyx_DECREF(((PyObject *)__pyx_v_self->cols)); __pyx_v_self->cols = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
+0077: self.flat_indices = np.ravel_multi_index((self.rows, self.cols), (self.dim, self.dim))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ravel_multi_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(((PyObject *)__pyx_v_self->rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->rows)); PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_self->rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->cols)); PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_self->cols)); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_9 = 0; __pyx_t_9 = NULL; __pyx_t_11 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_11 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_t_10}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_t_10}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_11, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_11, __pyx_t_10); __pyx_t_5 = 0; __pyx_t_10 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->flat_indices); __Pyx_DECREF(((PyObject *)__pyx_v_self->flat_indices)); __pyx_v_self->flat_indices = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+0078: r, c = np.triu_indices(self.dim, k=1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_k, __pyx_int_1) < 0) __PYX_ERR(0, 78, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_10))) || (PyList_CheckExact(__pyx_t_10))) { PyObject* sequence = __pyx_t_10; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 78, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 78, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_6), 2) < 0) __PYX_ERR(0, 78, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 78, __pyx_L1_error) __pyx_L7_unpacking_done:; } __pyx_v_r = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_c = __pyx_t_7; __pyx_t_7 = 0;
+0079: self.flat_indices1 = np.ravel_multi_index((r, c), (self.dim, self.dim))
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_ravel_multi_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_r); __Pyx_GIVEREF(__pyx_v_r); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_r); __Pyx_INCREF(__pyx_v_c); __Pyx_GIVEREF(__pyx_v_c); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_c); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_5); __pyx_t_6 = 0; __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_11 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_11 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_9}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_9}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_11, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_11, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_9 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_10); __Pyx_GOTREF(__pyx_v_self->flat_indices1); __Pyx_DECREF(((PyObject *)__pyx_v_self->flat_indices1)); __pyx_v_self->flat_indices1 = ((PyArrayObject *)__pyx_t_10); __pyx_t_10 = 0;
+0080: self.flat_indices2 = np.ravel_multi_index((c, r), (self.dim, self.dim))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ravel_multi_index); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_c); __Pyx_GIVEREF(__pyx_v_c); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_c); __Pyx_INCREF(__pyx_v_r); __Pyx_GIVEREF(__pyx_v_r); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_r); __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7); __pyx_t_9 = 0; __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_11 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_11 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_3, __pyx_t_5}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_3, __pyx_t_5}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_11, 2+__pyx_t_11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_11, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_11, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_10); __Pyx_GOTREF(__pyx_v_self->flat_indices2); __Pyx_DECREF(((PyObject *)__pyx_v_self->flat_indices2)); __pyx_v_self->flat_indices2 = ((PyArrayObject *)__pyx_t_10); __pyx_t_10 = 0;
0081:
+0082: def _infer_parameters_to_minimize(self, params, grad=0, keys=None, is_scale_parameter=None, scaled_guesses=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3_infer_parameters_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_2_infer_parameters_to_minimize[] = "Objective function for minimization call in infer_parameters.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3_infer_parameters_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_grad = 0;
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_guesses = 0;
PyObject *__pyx_v_flat_guess_range = 0;
CYTHON_UNUSED PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_s = 0;
PyObject *__pyx_v_scale = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_infer_parameters_to_minimize (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_grad,&__pyx_n_s_keys,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_guesses,&__pyx_n_s_flat_guess_range,&__pyx_n_s_eps,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_s,&__pyx_n_s_scale,&__pyx_n_s_tangent,0};
PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)__pyx_int_0);
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_2_infer_parameters_to_minimize(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_grad, PyObject *__pyx_v_keys, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_guesses, PyObject *__pyx_v_flat_guess_range, CYTHON_UNUSED PyObject *__pyx_v_eps, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_s, PyObject *__pyx_v_scale, PyObject *__pyx_v_tangent) {
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_minus_logp = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_infer_parameters_to_minimize", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.SIR_type._infer_parameters_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_minus_logp);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0083: flat_guess_range=None, eps=None, x=None, Tf=None, Nf=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
+0084: contactMatrix=None, s=None, scale=None, tangent=None):
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grad);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_guesses);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_guess_range);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scale);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[13] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_infer_parameters_to_minimize") < 0)) __PYX_ERR(0, 82, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_grad = values[1];
__pyx_v_keys = values[2];
__pyx_v_is_scale_parameter = values[3];
__pyx_v_scaled_guesses = values[4];
__pyx_v_flat_guess_range = values[5];
__pyx_v_eps = values[6];
__pyx_v_x = values[7];
__pyx_v_Tf = values[8];
__pyx_v_Nf = values[9];
__pyx_v_contactMatrix = values[10];
__pyx_v_s = values[11];
__pyx_v_scale = values[12];
__pyx_v_tangent = values[13];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_infer_parameters_to_minimize", 0, 1, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 82, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._infer_parameters_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_2_infer_parameters_to_minimize(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_grad, __pyx_v_keys, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses, __pyx_v_flat_guess_range, __pyx_v_eps, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_s, __pyx_v_scale, __pyx_v_tangent);
0085: """Objective function for minimization call in infer_parameters."""
0086: # Restore parameters from flattened parameters
+0087: orig_params = self._unflatten_parameters(params, flat_guess_range, is_scale_parameter, scaled_guesses)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_params, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_params, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_params); __Pyx_INCREF(__pyx_v_flat_guess_range); __Pyx_GIVEREF(__pyx_v_flat_guess_range); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_flat_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_guesses); __Pyx_GIVEREF(__pyx_v_scaled_guesses); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_scaled_guesses); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_orig_params = __pyx_t_1; __pyx_t_1 = 0;
0088:
+0089: parameters = self.fill_params_dict(keys, orig_params)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_keys, __pyx_v_orig_params}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_keys, __pyx_v_orig_params}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_orig_params); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_parameters = __pyx_t_1; __pyx_t_1 = 0;
+0090: self.set_params(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 90, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0091: model = self.make_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_model = __pyx_t_1; __pyx_t_1 = 0;
+0092: if tangent:
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 92, __pyx_L1_error) if (__pyx_t_6) { /* … */ goto __pyx_L3; }
+0093: minus_logp = self.obtain_log_p_for_traj_tangent_space(x, Tf, Nf, model, contactMatrix)
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_v_x, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 93, __pyx_L1_error) __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 93, __pyx_L1_error) __pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 93, __pyx_L1_error) __pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_tangent_space(__pyx_v_self, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_v_model, __pyx_v_contactMatrix)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __pyx_v_minus_logp = __pyx_t_1; __pyx_t_1 = 0;
0094: else:
+0095: minus_logp = self.obtain_log_p_for_traj(x, Tf, Nf, model, contactMatrix)
/*else*/ {
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_v_x, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 95, __pyx_L1_error)
__pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L1_error)
__pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_Nf); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 95, __pyx_L1_error)
__pyx_t_1 = PyFloat_FromDouble(((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj(__pyx_v_self, __pyx_t_7, __pyx_t_8, __pyx_t_4, __pyx_v_model, __pyx_v_contactMatrix)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 95, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
__pyx_v_minus_logp = __pyx_t_1;
__pyx_t_1 = 0;
}
__pyx_L3:;
+0096: minus_logp -= np.sum(lognorm.logpdf(params, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_params); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_s); __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 96, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_10, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_11); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_InPlaceSubtract(__pyx_v_minus_logp, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 96, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_minus_logp, __pyx_t_3); __pyx_t_3 = 0;
+0097: return minus_logp
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_minus_logp); __pyx_r = __pyx_v_minus_logp; goto __pyx_L0;
0098:
+0099: def symbolic_test(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5symbolic_test(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_5symbolic_test(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("symbolic_test (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_4symbolic_test(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_4symbolic_test(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self) {
PyObject *__pyx_v_x = NULL;
PyObject *__pyx_v_expr = NULL;
PyObject *__pyx_v_diff = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("symbolic_test", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR_type.symbolic_test", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XDECREF(__pyx_v_expr);
__Pyx_XDECREF(__pyx_v_diff);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0100: x = sympy.symbols('x')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sympy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_symbols); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_n_u_x) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_n_u_x); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_x = __pyx_t_1; __pyx_t_1 = 0;
+0101: expr = sympy.sin(x)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sympy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sin); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_x); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_expr = __pyx_t_1; __pyx_t_1 = 0;
+0102: diff = sympy.diff(expr, x)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sympy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_diff); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_expr, __pyx_v_x}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_expr, __pyx_v_x}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_expr); __Pyx_GIVEREF(__pyx_v_expr); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_expr); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_x); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_diff = __pyx_t_1; __pyx_t_1 = 0;
+0103: return diff, float(x.subs(x, 2))
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_subs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_x, __pyx_int_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_x, __pyx_int_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_v_x); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_int_2); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyNumber_Float(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_diff); __Pyx_GIVEREF(__pyx_v_diff); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_diff); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0104:
+0105: def infer_parameters(self, keys, guess, stds, bounds, np.ndarray x,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7infer_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_6infer_parameters[] = "Compute the maximum a-posteriori (MAP) estimate of the parameters of the SIR type model.\n This function assumes that full data on all classes is available (with latent variables, use SIR_type.latent_inference).\n\n IN DEVELOPMENT: Parameters that support age-dependent values can be inferred age-dependently by setting the guess\n to a numpy.array of self.M initial values. By default, each age-dependent parameter is inferred independently.\n If the relation of the different parameters is known, a scale factor of the initial guess can be inferred instead\n by setting infer_scale_parameter to True for each age-dependent parameter where this is wanted. Note that\n computing hessians for age-dependent rates is not yet supported. This functionality might be changed in the\n future without warning.\n\n Parameters\n ----------\n keys: list\n A list of names for parameters to be inferred\n guess: numpy.array or list\n Prior expectation (and initial guess) for the parameter values. Age-dependent\n rates can be inferred by supplying a guess that is an array instead a single float.\n stds: numpy.array\n Standard deviations for the log normal prior of the parameters\n bounds: 2d numpy.array\n Bounds for the parameters (number of parameters x 2)\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n Nf: float\n Number of data points along the trajectory\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n tangent: bool, optional\n Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.\n infer_scale_parameter: bool or list of bools (size: number of age-dependenly specifi""ed parameters)\n Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter\n for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each\n age-dependent parameter individually\n verbose: bool, optional\n Set to True to see intermediate outputs from the optimizer.\n ftol: float\n Relative tolerance of logp\n eps: float\n Disallow parameters closer than `eps` to the boundary (to avoid numerical instabilities).\n global_max_iter: int, optional\n Number of global optimisations performed.\n local_max_iter: int, optional\n Number of local optimisation performed.\n global_atol: float\n The absolute tolerance for global optimisation.\n enable_global: bool, optional\n Set to True to enable global optimisation.\n enable_local: bool, optional\n Set to True to enable local optimisation.\n cma_processes: int, optional\n Number of parallel processes used for global optimisation.\n cma_population: int, optional\n The number of samples used in each step of the CMA algorithm.\n cma_stds: int, optional\n The standard deviation used in cma global optimisation. If not specified, `cma_stds` is set to `stds`.\n\n Returns\n -------\n estimates: numpy.array\n The MAP parameter estimate\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7infer_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_guess = 0;
PyObject *__pyx_v_stds = 0;
PyObject *__pyx_v_bounds = 0;
PyArrayObject *__pyx_v_x = 0;
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_full_output = 0;
PyObject *__pyx_v_ftol = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_global_max_iter = 0;
PyObject *__pyx_v_local_max_iter = 0;
PyObject *__pyx_v_global_atol = 0;
PyObject *__pyx_v_enable_global = 0;
PyObject *__pyx_v_enable_local = 0;
PyObject *__pyx_v_cma_processes = 0;
PyObject *__pyx_v_cma_population = 0;
PyObject *__pyx_v_cma_stds = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_parameters (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keys,&__pyx_n_s_guess,&__pyx_n_s_stds,&__pyx_n_s_bounds,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_verbose,&__pyx_n_s_full_output,&__pyx_n_s_ftol,&__pyx_n_s_eps,&__pyx_n_s_global_max_iter,&__pyx_n_s_local_max_iter,&__pyx_n_s_global_atol,&__pyx_n_s_enable_global,&__pyx_n_s_enable_local,&__pyx_n_s_cma_processes,&__pyx_n_s_cma_population,&__pyx_n_s_cma_stds,0};
PyObject* values[22] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_6infer_parameters(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_keys, PyObject *__pyx_v_guess, PyObject *__pyx_v_stds, PyObject *__pyx_v_bounds, PyArrayObject *__pyx_v_x, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_verbose, PyObject *__pyx_v_full_output, PyObject *__pyx_v_ftol, PyObject *__pyx_v_eps, PyObject *__pyx_v_global_max_iter, PyObject *__pyx_v_local_max_iter, PyObject *__pyx_v_global_atol, PyObject *__pyx_v_enable_global, PyObject *__pyx_v_enable_local, PyObject *__pyx_v_cma_processes, PyObject *__pyx_v_cma_population, PyObject *__pyx_v_cma_stds) {
PyObject *__pyx_v_flat_guess = NULL;
PyObject *__pyx_v_flat_stds = NULL;
PyObject *__pyx_v_flat_bounds = NULL;
PyObject *__pyx_v_flat_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_guesses = NULL;
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_scale = NULL;
PyObject *__pyx_v_flat_cma_stds = NULL;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_minimize_args = NULL;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_v_params = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_parameters", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_flat_guess);
__Pyx_XDECREF(__pyx_v_flat_stds);
__Pyx_XDECREF(__pyx_v_flat_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_guesses);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_flat_cma_stds);
__Pyx_XDECREF(__pyx_v_minimize_args);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XDECREF(__pyx_v_params);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0106: double Tf, Py_ssize_t Nf, contactMatrix,
+0107: tangent=False,
values[8] = ((PyObject *)Py_False);
+0108: infer_scale_parameter=False, verbose=False, full_output=False,
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)Py_False);
values[12] = ((PyObject *)__pyx_float_1eneg_6);
values[13] = ((PyObject *)__pyx_float_1eneg_5);
values[14] = ((PyObject *)__pyx_int_100);
values[15] = ((PyObject *)__pyx_int_100);
values[16] = ((PyObject *)__pyx_int_1);
0109: ftol=1e-6, eps=1e-5, global_max_iter=100, local_max_iter=100, global_atol=1,
+0110: enable_global=True, enable_local=True, cma_processes=0, cma_population=16, cma_stds=None):
values[17] = ((PyObject *)Py_True);
values[18] = ((PyObject *)Py_True);
values[19] = ((PyObject *)__pyx_int_0);
values[20] = ((PyObject *)__pyx_int_16);
values[21] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_guess)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 0, 8, 22, 1); __PYX_ERR(0, 105, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 0, 8, 22, 2); __PYX_ERR(0, 105, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 0, 8, 22, 3); __PYX_ERR(0, 105, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 0, 8, 22, 4); __PYX_ERR(0, 105, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 0, 8, 22, 5); __PYX_ERR(0, 105, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 0, 8, 22, 6); __PYX_ERR(0, 105, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_parameters", 0, 8, 22, 7); __PYX_ERR(0, 105, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_full_output);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ftol);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_max_iter);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_max_iter);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_atol);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_global);
if (value) { values[17] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 18:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_local);
if (value) { values[18] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 19:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_processes);
if (value) { values[19] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 20:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_population);
if (value) { values[20] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 21:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_stds);
if (value) { values[21] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "infer_parameters") < 0)) __PYX_ERR(0, 105, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_keys = values[0];
__pyx_v_guess = values[1];
__pyx_v_stds = values[2];
__pyx_v_bounds = values[3];
__pyx_v_x = ((PyArrayObject *)values[4]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 106, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[6]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 106, __pyx_L3_error)
__pyx_v_contactMatrix = values[7];
__pyx_v_tangent = values[8];
__pyx_v_infer_scale_parameter = values[9];
__pyx_v_verbose = values[10];
__pyx_v_full_output = values[11];
__pyx_v_ftol = values[12];
__pyx_v_eps = values[13];
__pyx_v_global_max_iter = values[14];
__pyx_v_local_max_iter = values[15];
__pyx_v_global_atol = values[16];
__pyx_v_enable_global = values[17];
__pyx_v_enable_local = values[18];
__pyx_v_cma_processes = values[19];
__pyx_v_cma_population = values[20];
__pyx_v_cma_stds = values[21];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("infer_parameters", 0, 8, 22, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 105, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 105, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_6infer_parameters(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_keys, __pyx_v_guess, __pyx_v_stds, __pyx_v_bounds, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_verbose, __pyx_v_full_output, __pyx_v_ftol, __pyx_v_eps, __pyx_v_global_max_iter, __pyx_v_local_max_iter, __pyx_v_global_atol, __pyx_v_enable_global, __pyx_v_enable_local, __pyx_v_cma_processes, __pyx_v_cma_population, __pyx_v_cma_stds);
0111: '''Compute the maximum a-posteriori (MAP) estimate of the parameters of the SIR type model.
0112: This function assumes that full data on all classes is available (with latent variables, use SIR_type.latent_inference).
0113:
0114: IN DEVELOPMENT: Parameters that support age-dependent values can be inferred age-dependently by setting the guess
0115: to a numpy.array of self.M initial values. By default, each age-dependent parameter is inferred independently.
0116: If the relation of the different parameters is known, a scale factor of the initial guess can be inferred instead
0117: by setting infer_scale_parameter to True for each age-dependent parameter where this is wanted. Note that
0118: computing hessians for age-dependent rates is not yet supported. This functionality might be changed in the
0119: future without warning.
0120:
0121: Parameters
0122: ----------
0123: keys: list
0124: A list of names for parameters to be inferred
0125: guess: numpy.array or list
0126: Prior expectation (and initial guess) for the parameter values. Age-dependent
0127: rates can be inferred by supplying a guess that is an array instead a single float.
0128: stds: numpy.array
0129: Standard deviations for the log normal prior of the parameters
0130: bounds: 2d numpy.array
0131: Bounds for the parameters (number of parameters x 2)
0132: x: 2d numpy.array
0133: Observed trajectory (number of data points x (age groups * model classes))
0134: Tf: float
0135: Total time of the trajectory
0136: Nf: float
0137: Number of data points along the trajectory
0138: contactMatrix: callable
0139: A function that returns the contact matrix at time t (input).
0140: tangent: bool, optional
0141: Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.
0142: infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)
0143: Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter
0144: for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each
0145: age-dependent parameter individually
0146: verbose: bool, optional
0147: Set to True to see intermediate outputs from the optimizer.
0148: ftol: float
0149: Relative tolerance of logp
0150: eps: float
0151: Disallow parameters closer than `eps` to the boundary (to avoid numerical instabilities).
0152: global_max_iter: int, optional
0153: Number of global optimisations performed.
0154: local_max_iter: int, optional
0155: Number of local optimisation performed.
0156: global_atol: float
0157: The absolute tolerance for global optimisation.
0158: enable_global: bool, optional
0159: Set to True to enable global optimisation.
0160: enable_local: bool, optional
0161: Set to True to enable local optimisation.
0162: cma_processes: int, optional
0163: Number of parallel processes used for global optimisation.
0164: cma_population: int, optional
0165: The number of samples used in each step of the CMA algorithm.
0166: cma_stds: int, optional
0167: The standard deviation used in cma global optimisation. If not specified, `cma_stds` is set to `stds`.
0168:
0169: Returns
0170: -------
0171: estimates: numpy.array
0172: The MAP parameter estimate
0173: '''
0174: # Transfer the guesses, stds, ... which can contain arrays as entries for age-dependend rates to a flat vector for inference.
+0175: flat_guess, flat_stds, flat_bounds, flat_guess_range, is_scale_parameter, scaled_guesses \
__pyx_v_flat_guess = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_flat_stds = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_flat_bounds = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_flat_guess_range = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_is_scale_parameter = __pyx_t_7; __pyx_t_7 = 0; __pyx_v_scaled_guesses = __pyx_t_8; __pyx_t_8 = 0;
+0176: = self._flatten_parameters(guess, stds, bounds, infer_scale_parameter)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_guess, __pyx_v_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_guess, __pyx_v_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 175, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); __pyx_t_3 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); __pyx_t_7 = PyList_GET_ITEM(sequence, 4); __pyx_t_8 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_2,&__pyx_t_5,&__pyx_t_3,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 175, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_2,&__pyx_t_5,&__pyx_t_3,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8}; __pyx_t_9 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_10(__pyx_t_9); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 6) < 0) __PYX_ERR(0, 175, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 175, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+0177: s, scale = pyross.utils.make_log_norm_dist(flat_guess, flat_stds)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pyross); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_v_flat_guess); __Pyx_GIVEREF(__pyx_v_flat_guess); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_4, __pyx_v_flat_guess); __Pyx_INCREF(__pyx_v_flat_stds); __Pyx_GIVEREF(__pyx_v_flat_stds); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_4, __pyx_v_flat_stds); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 177, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_8 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 177, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_8 = __pyx_t_10(__pyx_t_7); if (unlikely(!__pyx_t_8)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); index = 1; __pyx_t_6 = __pyx_t_10(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_7), 2) < 0) __PYX_ERR(0, 177, __pyx_L1_error) __pyx_t_10 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_10 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 177, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_v_s = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_scale = __pyx_t_6; __pyx_t_6 = 0;
0178:
+0179: if cma_stds is None:
__pyx_t_11 = (__pyx_v_cma_stds == Py_None);
__pyx_t_12 = (__pyx_t_11 != 0);
if (__pyx_t_12) {
/* … */
goto __pyx_L7;
}
0180: # Use prior standard deviations here
+0181: flat_cma_stds = flat_stds
__Pyx_INCREF(__pyx_v_flat_stds);
__pyx_v_flat_cma_stds = __pyx_v_flat_stds;
0182: else:
+0183: flat_cma_stds = np.zeros(len(flat_guess))
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 183, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_13 = PyObject_Length(__pyx_v_flat_guess); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 183, __pyx_L1_error)
__pyx_t_6 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 183, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
__pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_v_flat_cma_stds = __pyx_t_1;
__pyx_t_1 = 0;
+0184: for i in range(len(guess)):
__pyx_t_13 = PyObject_Length(__pyx_v_guess); if (unlikely(__pyx_t_13 == ((Py_ssize_t)-1))) __PYX_ERR(0, 184, __pyx_L1_error) __pyx_t_14 = __pyx_t_13; for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) { __pyx_v_i = __pyx_t_15;
+0185: flat_cma_stds[flat_guess_range[i]] = cma_stds[i]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_cma_stds, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_flat_guess_range, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (unlikely(PyObject_SetItem(__pyx_v_flat_cma_stds, __pyx_t_8, __pyx_t_1) < 0)) __PYX_ERR(0, 185, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } } __pyx_L7:;
0186:
+0187: minimize_args={'keys':keys, 'is_scale_parameter':is_scale_parameter, 'scaled_guesses':scaled_guesses, 'flat_guess_range':flat_guess_range,
__pyx_t_1 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 187, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 187, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_scaled_guesses, __pyx_v_scaled_guesses) < 0) __PYX_ERR(0, 187, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_flat_guess_range, __pyx_v_flat_guess_range) < 0) __PYX_ERR(0, 187, __pyx_L1_error)
+0188: 'eps':eps, 'x':x, 'Tf':Tf, 'Nf':Nf, 'contactMatrix':contactMatrix, 's':s, 'scale':scale, 'tangent':tangent}
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_eps, __pyx_v_eps) < 0) __PYX_ERR(0, 187, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_x, ((PyObject *)__pyx_v_x)) < 0) __PYX_ERR(0, 187, __pyx_L1_error) __pyx_t_8 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Tf, __pyx_t_8) < 0) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 188, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Nf, __pyx_t_8) < 0) __PYX_ERR(0, 187, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 187, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_s, __pyx_v_s) < 0) __PYX_ERR(0, 187, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 187, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 187, __pyx_L1_error) __pyx_v_minimize_args = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+0189: res = minimization(self._infer_parameters_to_minimize, flat_guess, flat_bounds, ftol=ftol, global_max_iter=global_max_iter,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_minimization); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer_parameters_to_minimize); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __Pyx_INCREF(__pyx_v_flat_guess); __Pyx_GIVEREF(__pyx_v_flat_guess); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_flat_guess); __Pyx_INCREF(__pyx_v_flat_bounds); __Pyx_GIVEREF(__pyx_v_flat_bounds); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_flat_bounds); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_ftol, __pyx_v_ftol) < 0) __PYX_ERR(0, 189, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_global_max_iter, __pyx_v_global_max_iter) < 0) __PYX_ERR(0, 189, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 189, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_res = __pyx_t_7; __pyx_t_7 = 0;
+0190: local_max_iter=local_max_iter, global_atol=global_atol,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_local_max_iter, __pyx_v_local_max_iter) < 0) __PYX_ERR(0, 189, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_global_atol, __pyx_v_global_atol) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
+0191: enable_global=enable_global, enable_local=enable_local, cma_processes=cma_processes,
if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_enable_global, __pyx_v_enable_global) < 0) __PYX_ERR(0, 189, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_enable_local, __pyx_v_enable_local) < 0) __PYX_ERR(0, 189, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_cma_processes, __pyx_v_cma_processes) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
+0192: cma_population=cma_population, cma_stds=flat_cma_stds, verbose=verbose, args_dict=minimize_args)
if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_cma_population, __pyx_v_cma_population) < 0) __PYX_ERR(0, 189, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_cma_stds, __pyx_v_flat_cma_stds) < 0) __PYX_ERR(0, 189, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 189, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_args_dict, __pyx_v_minimize_args) < 0) __PYX_ERR(0, 189, __pyx_L1_error)
+0193: params = res[0]
__pyx_t_7 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_params = __pyx_t_7; __pyx_t_7 = 0;
0194: # Get the parameters (in their original structure) from the flattened parameter vector.
+0195: orig_params = self._unflatten_parameters(params, flat_guess_range, is_scale_parameter, scaled_guesses)
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_params, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_params, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif { __pyx_t_1 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_v_params); __Pyx_INCREF(__pyx_v_flat_guess_range); __Pyx_GIVEREF(__pyx_v_flat_guess_range); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_v_flat_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_4, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_guesses); __Pyx_GIVEREF(__pyx_v_scaled_guesses); PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_4, __pyx_v_scaled_guesses); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_orig_params = __pyx_t_7; __pyx_t_7 = 0;
+0196: if full_output:
__pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_v_full_output); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 196, __pyx_L1_error) if (__pyx_t_12) { /* … */ }
+0197: return np.array(orig_params), res[1]
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_7 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_8, __pyx_v_orig_params) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_orig_params); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_res, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_1); __pyx_t_7 = 0; __pyx_t_1 = 0; __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
0198: else:
+0199: return np.array(orig_params)
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
__pyx_t_8 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_1, __pyx_v_orig_params) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_orig_params);
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 199, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
goto __pyx_L0;
}
0200:
0201:
+0202: def _nested_sampling_prior_transform(self, x, s=None, scale=None, ppf_bounds=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_9_nested_sampling_prior_transform(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_9_nested_sampling_prior_transform(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_s = 0;
PyObject *__pyx_v_scale = 0;
PyObject *__pyx_v_ppf_bounds = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_nested_sampling_prior_transform (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_s,&__pyx_n_s_scale,&__pyx_n_s_ppf_bounds,0};
PyObject* values[4] = {0,0,0,0};
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scale);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ppf_bounds);
if (value) { values[3] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_nested_sampling_prior_transform") < 0)) __PYX_ERR(0, 202, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x = values[0];
__pyx_v_s = values[1];
__pyx_v_scale = values[2];
__pyx_v_ppf_bounds = values[3];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_nested_sampling_prior_transform", 0, 1, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 202, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._nested_sampling_prior_transform", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_8_nested_sampling_prior_transform(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x, __pyx_v_s, __pyx_v_scale, __pyx_v_ppf_bounds);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_8_nested_sampling_prior_transform(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_s, PyObject *__pyx_v_scale, PyObject *__pyx_v_ppf_bounds) {
PyObject *__pyx_v_y = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_nested_sampling_prior_transform", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type._nested_sampling_prior_transform", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_y);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0203: # Tranform a sample x ~ Unif([0,1]^d) to a sample of the prior using inverse tranform sampling.
+0204: y = ppf_bounds[:,0] + x * ppf_bounds[:,1]
__pyx_slice__2 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__2)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); /* … */ __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_ppf_bounds, __pyx_tuple__3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_tuple__3 = PyTuple_Pack(2, __pyx_slice__2, __pyx_int_0); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_ppf_bounds, __pyx_tuple__4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(__pyx_v_x, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_y = __pyx_t_2; __pyx_t_2 = 0; __pyx_tuple__4 = PyTuple_Pack(2, __pyx_slice__2, __pyx_int_1); if (unlikely(!__pyx_tuple__4)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4);
+0205: return lognorm.ppf(y, s, scale=scale)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ppf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_s); __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 205, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 205, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
0206:
+0207: def _nested_sampling_loglike(self, params, keys=None, is_scale_parameter=None, scaled_guesses=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_11_nested_sampling_loglike(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_11_nested_sampling_loglike(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_guesses = 0;
PyObject *__pyx_v_flat_guess_range = 0;
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_s = 0;
PyObject *__pyx_v_scale = 0;
CYTHON_UNUSED PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_nested_sampling_loglike (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_keys,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_guesses,&__pyx_n_s_flat_guess_range,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_s,&__pyx_n_s_scale,&__pyx_n_s_tangent,0};
PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_10_nested_sampling_loglike(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, PyObject *__pyx_v_keys, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_guesses, PyObject *__pyx_v_flat_guess_range, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_s, PyObject *__pyx_v_scale, CYTHON_UNUSED PyObject *__pyx_v_tangent) {
PyObject *__pyx_v_params_unflat = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_logP = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_nested_sampling_loglike", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type._nested_sampling_loglike", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_params_unflat);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_logP);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0208: flat_guess_range=None, x=None, Tf=None, Nf=None, contactMatrix=None,
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
+0209: s=None, scale=None, tangent=None):
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_guesses);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_guess_range);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scale);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[11] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_nested_sampling_loglike") < 0)) __PYX_ERR(0, 207, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_keys = values[1];
__pyx_v_is_scale_parameter = values[2];
__pyx_v_scaled_guesses = values[3];
__pyx_v_flat_guess_range = values[4];
__pyx_v_x = values[5];
__pyx_v_Tf = values[6];
__pyx_v_Nf = values[7];
__pyx_v_contactMatrix = values[8];
__pyx_v_s = values[9];
__pyx_v_scale = values[10];
__pyx_v_tangent = values[11];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_nested_sampling_loglike", 0, 1, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 207, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._nested_sampling_loglike", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_10_nested_sampling_loglike(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_keys, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses, __pyx_v_flat_guess_range, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_s, __pyx_v_scale, __pyx_v_tangent);
0210: # Compute the log-likelihood for the given parameters.
+0211: params_unflat = self._unflatten_parameters(params, flat_guess_range, is_scale_parameter, scaled_guesses)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_params, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_params, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_params); __Pyx_INCREF(__pyx_v_flat_guess_range); __Pyx_GIVEREF(__pyx_v_flat_guess_range); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_flat_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_guesses); __Pyx_GIVEREF(__pyx_v_scaled_guesses); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_scaled_guesses); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_params_unflat = __pyx_t_1; __pyx_t_1 = 0;
+0212: parameters = self.fill_params_dict(keys, params_unflat)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_keys, __pyx_v_params_unflat}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_keys, __pyx_v_params_unflat}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_keys); __Pyx_INCREF(__pyx_v_params_unflat); __Pyx_GIVEREF(__pyx_v_params_unflat); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_params_unflat); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_parameters = __pyx_t_1; __pyx_t_1 = 0;
+0213: logP = -self.obtain_minus_log_p(parameters, x, Tf, Nf, contactMatrix, tangent=False)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_minus_log_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_x); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_Nf); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_contactMatrix); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tangent, Py_False) < 0) __PYX_ERR(0, 213, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_logP = __pyx_t_3; __pyx_t_3 = 0;
+0214: logP += np.sum(lognorm.logpdf(params, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_params); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_s); __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 214, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_logP, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_logP, __pyx_t_2); __pyx_t_2 = 0;
+0215: return logP
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_logP); __pyx_r = __pyx_v_logP; goto __pyx_L0;
0216:
+0217: def nested_sampling_inference(self, keys, guess, stds, np.ndarray x, double Tf, Py_ssize_t Nf, contactMatrix,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13nested_sampling_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_12nested_sampling_inference[] = "Compute the log-evidence and weighted samples of the a-posteriori distribution of the parameters of a SIR type model\n using nested sampling as implemented in the `nestle` Python package. This function assumes that full data on\n all classes is available.\n\n This function provides a computational alterantive to `log_G_evidence` and `infer_parameters`. It does not use\n the Laplace approximation to compute the evidence and, in addition, returns a set of representative samples that can\n be used to compute a posterior mean estimate (insted of the MAP estimate). This approach approach is much more resource\n intensive and typically only viable for small models or tangent space inference.\n\n Parameters\n ----------\n keys: list\n A list of names for parameters to be inferred\n guess: numpy.array or list\n Prior expectation (and initial guess) for the parameter values. Age-dependent\n rates can be inferred by supplying a guess that is an array instead a single float.\n stds: numpy.array\n Standard deviations for the log normal prior of the parameters\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n Nf: float\n Number of data points along the trajectory\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n bounds: np.array(len(guess), 2), optional\n Bound the prior within the values specified by this. This can be used to avoid sampling the posterior\n in regions where the solution is numerically unstable (e.g. parameters close to 0). Any bound introduces\n a bias to the result, therefore one must make sure that the blocked regions are negligible.\n tangent: bool, optional\n Set to True to do in""ference in tangent space (might be less robust but a lot faster). Default is False.\n infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)\n Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter\n for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each\n age-dependent parameter individually\n verbose: bool, optional\n Set to True to see intermediate outputs from the nested sampling procedure.\n queue_size: int\n Size of the internal queue of samples of the nested sampling algorithm. The log-likelihood of these samples\n is computed in parallel (if queue_size > 1).\n max_workers: int\n The maximal number of processes used to compute samples.\n npoints: int\n Argument of `nestle.sample`. The number of active points used in the nested sampling algorithm. The higher the\n number the more accurate and expensive is the evidence computation.\n method: str\n Nested sampling method used int `nestle.sample`, see their documentation. Default is `single`, for multimodel posteriors,\n use `multi`.\n max_iter: int\n Maximum number of iterations of the nested sampling algorithm.\n dlogz: float, optional\n Stopping threshold for the estimated error of the log-evidence. This option is mutually exclusive with `decline_factor`.\n decline_factor: float, optional\n Stop the iteration when the weight (likelihood times prior volume) of newly saved samples has been declining for\n `decline_factor * nsamples` consecutive samples. This option is mutually exclusive with `dlogz`.\n\n Returns\n -------\n log_evidence:\n The nested sampling estimate of the log-evidence.\n (samples,"" weights):\n A set of weighted samples approximating the posterios distribution.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_13nested_sampling_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_guess = 0;
PyObject *__pyx_v_stds = 0;
PyArrayObject *__pyx_v_x = 0;
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_queue_size = 0;
PyObject *__pyx_v_max_workers = 0;
PyObject *__pyx_v_npoints = 0;
PyObject *__pyx_v_method = 0;
PyObject *__pyx_v_max_iter = 0;
PyObject *__pyx_v_dlogz = 0;
PyObject *__pyx_v_decline_factor = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_inference (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keys,&__pyx_n_s_guess,&__pyx_n_s_stds,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_bounds,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_verbose,&__pyx_n_s_queue_size,&__pyx_n_s_max_workers,&__pyx_n_s_npoints,&__pyx_n_s_method,&__pyx_n_s_max_iter,&__pyx_n_s_dlogz,&__pyx_n_s_decline_factor,0};
PyObject* values[18] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_12nested_sampling_inference(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_keys, PyObject *__pyx_v_guess, PyObject *__pyx_v_stds, PyArrayObject *__pyx_v_x, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_bounds, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_verbose, PyObject *__pyx_v_queue_size, PyObject *__pyx_v_max_workers, PyObject *__pyx_v_npoints, PyObject *__pyx_v_method, PyObject *__pyx_v_max_iter, PyObject *__pyx_v_dlogz, PyObject *__pyx_v_decline_factor) {
int __pyx_v_enable_bounds;
PyObject *__pyx_v_flat_guess = NULL;
PyObject *__pyx_v_flat_stds = NULL;
PyObject *__pyx_v_flat_bounds = NULL;
PyObject *__pyx_v_flat_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_guesses = NULL;
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_scale = NULL;
Py_ssize_t __pyx_v_k;
PyObject *__pyx_v_ppf_bounds = NULL;
PyObject *__pyx_v_prior_transform_args = NULL;
PyObject *__pyx_v_loglike_args = NULL;
PyObject *__pyx_v_result = NULL;
PyObject *__pyx_v_log_evidence = NULL;
PyObject *__pyx_v_unflattened_samples = NULL;
PyObject *__pyx_v_sample = NULL;
CYTHON_UNUSED PyObject *__pyx_v_sample_unflat = NULL;
PyObject *__pyx_v_weighted_samples = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_inference", 0);
__Pyx_INCREF(__pyx_v_bounds);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_flat_guess);
__Pyx_XDECREF(__pyx_v_flat_stds);
__Pyx_XDECREF(__pyx_v_flat_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_guesses);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_ppf_bounds);
__Pyx_XDECREF(__pyx_v_prior_transform_args);
__Pyx_XDECREF(__pyx_v_loglike_args);
__Pyx_XDECREF(__pyx_v_result);
__Pyx_XDECREF(__pyx_v_log_evidence);
__Pyx_XDECREF(__pyx_v_unflattened_samples);
__Pyx_XDECREF(__pyx_v_sample);
__Pyx_XDECREF(__pyx_v_sample_unflat);
__Pyx_XDECREF(__pyx_v_weighted_samples);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0218: bounds=None, tangent=False, infer_scale_parameter=False, verbose=False,
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_False);
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)__pyx_int_1);
+0219: queue_size=1, max_workers=None, npoints=100, method='single', max_iter=1000,
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)__pyx_int_100);
values[14] = ((PyObject *)__pyx_n_u_single);
values[15] = ((PyObject *)__pyx_int_1000);
+0220: dlogz=None, decline_factor=None):
values[16] = ((PyObject *)Py_None);
values[17] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_guess)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 7, 18, 1); __PYX_ERR(0, 217, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 7, 18, 2); __PYX_ERR(0, 217, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 7, 18, 3); __PYX_ERR(0, 217, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 7, 18, 4); __PYX_ERR(0, 217, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 7, 18, 5); __PYX_ERR(0, 217, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 7, 18, 6); __PYX_ERR(0, 217, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queue_size);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_workers);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_npoints);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_iter);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dlogz);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_decline_factor);
if (value) { values[17] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "nested_sampling_inference") < 0)) __PYX_ERR(0, 217, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_keys = values[0];
__pyx_v_guess = values[1];
__pyx_v_stds = values[2];
__pyx_v_x = ((PyArrayObject *)values[3]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 217, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[5]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 217, __pyx_L3_error)
__pyx_v_contactMatrix = values[6];
__pyx_v_bounds = values[7];
__pyx_v_tangent = values[8];
__pyx_v_infer_scale_parameter = values[9];
__pyx_v_verbose = values[10];
__pyx_v_queue_size = values[11];
__pyx_v_max_workers = values[12];
__pyx_v_npoints = values[13];
__pyx_v_method = values[14];
__pyx_v_max_iter = values[15];
__pyx_v_dlogz = values[16];
__pyx_v_decline_factor = values[17];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("nested_sampling_inference", 0, 7, 18, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 217, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_5numpy_ndarray, 1, "x", 0))) __PYX_ERR(0, 217, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_12nested_sampling_inference(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_keys, __pyx_v_guess, __pyx_v_stds, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_bounds, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_verbose, __pyx_v_queue_size, __pyx_v_max_workers, __pyx_v_npoints, __pyx_v_method, __pyx_v_max_iter, __pyx_v_dlogz, __pyx_v_decline_factor);
0221: '''Compute the log-evidence and weighted samples of the a-posteriori distribution of the parameters of a SIR type model
0222: using nested sampling as implemented in the `nestle` Python package. This function assumes that full data on
0223: all classes is available.
0224:
0225: This function provides a computational alterantive to `log_G_evidence` and `infer_parameters`. It does not use
0226: the Laplace approximation to compute the evidence and, in addition, returns a set of representative samples that can
0227: be used to compute a posterior mean estimate (insted of the MAP estimate). This approach approach is much more resource
0228: intensive and typically only viable for small models or tangent space inference.
0229:
0230: Parameters
0231: ----------
0232: keys: list
0233: A list of names for parameters to be inferred
0234: guess: numpy.array or list
0235: Prior expectation (and initial guess) for the parameter values. Age-dependent
0236: rates can be inferred by supplying a guess that is an array instead a single float.
0237: stds: numpy.array
0238: Standard deviations for the log normal prior of the parameters
0239: x: 2d numpy.array
0240: Observed trajectory (number of data points x (age groups * model classes))
0241: Tf: float
0242: Total time of the trajectory
0243: Nf: float
0244: Number of data points along the trajectory
0245: contactMatrix: callable
0246: A function that returns the contact matrix at time t (input).
0247: bounds: np.array(len(guess), 2), optional
0248: Bound the prior within the values specified by this. This can be used to avoid sampling the posterior
0249: in regions where the solution is numerically unstable (e.g. parameters close to 0). Any bound introduces
0250: a bias to the result, therefore one must make sure that the blocked regions are negligible.
0251: tangent: bool, optional
0252: Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.
0253: infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)
0254: Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter
0255: for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each
0256: age-dependent parameter individually
0257: verbose: bool, optional
0258: Set to True to see intermediate outputs from the nested sampling procedure.
0259: queue_size: int
0260: Size of the internal queue of samples of the nested sampling algorithm. The log-likelihood of these samples
0261: is computed in parallel (if queue_size > 1).
0262: max_workers: int
0263: The maximal number of processes used to compute samples.
0264: npoints: int
0265: Argument of `nestle.sample`. The number of active points used in the nested sampling algorithm. The higher the
0266: number the more accurate and expensive is the evidence computation.
0267: method: str
0268: Nested sampling method used int `nestle.sample`, see their documentation. Default is `single`, for multimodel posteriors,
0269: use `multi`.
0270: max_iter: int
0271: Maximum number of iterations of the nested sampling algorithm.
0272: dlogz: float, optional
0273: Stopping threshold for the estimated error of the log-evidence. This option is mutually exclusive with `decline_factor`.
0274: decline_factor: float, optional
0275: Stop the iteration when the weight (likelihood times prior volume) of newly saved samples has been declining for
0276: `decline_factor * nsamples` consecutive samples. This option is mutually exclusive with `dlogz`.
0277:
0278: Returns
0279: -------
0280: log_evidence:
0281: The nested sampling estimate of the log-evidence.
0282: (samples, weights):
0283: A set of weighted samples approximating the posterios distribution.
0284: '''
0285:
+0286: if nestle is None:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_nestle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+0287: raise Exception("Nested sampling needs optional dependency `nestle` which was not found.")
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 287, __pyx_L1_error) /* … */ __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_u_Nested_sampling_needs_optional_d); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 287, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5);
0288:
+0289: enable_bounds = True
__pyx_v_enable_bounds = 1;
+0290: if bounds is None:
__pyx_t_3 = (__pyx_v_bounds == Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
}
+0291: enable_bounds = False
__pyx_v_enable_bounds = 0;
+0292: bounds = np.zeros((len(guess), 2))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = PyObject_Length(__pyx_v_guess); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 292, __pyx_L1_error) __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_2); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_bounds, __pyx_t_1); __pyx_t_1 = 0;
0293:
+0294: flat_guess, flat_stds, flat_bounds, flat_guess_range, is_scale_parameter, scaled_guesses \
__pyx_v_flat_guess = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_flat_stds = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_flat_bounds = __pyx_t_7; __pyx_t_7 = 0; __pyx_v_flat_guess_range = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_is_scale_parameter = __pyx_t_10; __pyx_t_10 = 0; __pyx_v_scaled_guesses = __pyx_t_11; __pyx_t_11 = 0;
+0295: = self._flatten_parameters(guess, stds, bounds, infer_scale_parameter)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_guess, __pyx_v_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_guess, __pyx_v_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_v_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_8, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_4, 3+__pyx_t_8, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 295, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 294, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); __pyx_t_7 = PyList_GET_ITEM(sequence, 2); __pyx_t_9 = PyList_GET_ITEM(sequence, 3); __pyx_t_10 = PyList_GET_ITEM(sequence, 4); __pyx_t_11 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_5,&__pyx_t_4,&__pyx_t_7,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 294, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_5,&__pyx_t_4,&__pyx_t_7,&__pyx_t_9,&__pyx_t_10,&__pyx_t_11}; __pyx_t_12 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 294, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_13(__pyx_t_12); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 6) < 0) __PYX_ERR(0, 294, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 294, __pyx_L1_error) __pyx_L6_unpacking_done:; }
+0296: s, scale = pyross.utils.make_log_norm_dist(flat_guess, flat_stds)
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_pyross); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_utils); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_flat_guess); __Pyx_GIVEREF(__pyx_v_flat_guess); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_flat_guess); __Pyx_INCREF(__pyx_v_flat_stds); __Pyx_GIVEREF(__pyx_v_flat_stds); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_v_flat_stds); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 296, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_11 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_11 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_9); #else __pyx_t_11 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 296, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_10)->tp_iternext; index = 0; __pyx_t_11 = __pyx_t_13(__pyx_t_10); if (unlikely(!__pyx_t_11)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); index = 1; __pyx_t_9 = __pyx_t_13(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_10), 2) < 0) __PYX_ERR(0, 296, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 296, __pyx_L1_error) __pyx_L8_unpacking_done:; } __pyx_v_s = __pyx_t_11; __pyx_t_11 = 0; __pyx_v_scale = __pyx_t_9; __pyx_t_9 = 0;
0297:
+0298: k = len(flat_guess)
__pyx_t_6 = PyObject_Length(__pyx_v_flat_guess); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 298, __pyx_L1_error) __pyx_v_k = __pyx_t_6;
0299: # We sample the prior by inverse transform sampling from the unite cube. To implement bounds (if supplied)
0300: # we shrink the unit cube according the the provided bounds in each dimension.
+0301: ppf_bounds = np.zeros((k, 2))
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_int_2); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_9, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_ppf_bounds = __pyx_t_1; __pyx_t_1 = 0;
+0302: if enable_bounds:
__pyx_t_2 = (__pyx_v_enable_bounds != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L9;
}
+0303: ppf_bounds[:,0] = lognorm.cdf(flat_bounds[:,0], s, scale=scale)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_cdf); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_flat_bounds, __pyx_tuple__3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_s); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 303, __pyx_L1_error) __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(PyObject_SetItem(__pyx_v_ppf_bounds, __pyx_tuple__3, __pyx_t_9) < 0)) __PYX_ERR(0, 303, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+0304: ppf_bounds[:,1] = lognorm.cdf(flat_bounds[:,1], s, scale=scale)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_cdf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_flat_bounds, __pyx_tuple__4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_s); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 304, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(PyObject_SetItem(__pyx_v_ppf_bounds, __pyx_tuple__4, __pyx_t_11) < 0)) __PYX_ERR(0, 304, __pyx_L1_error) __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+0305: ppf_bounds[:,1] = ppf_bounds[:,1] - ppf_bounds[:,0]
__pyx_t_11 = __Pyx_PyObject_GetItem(__pyx_v_ppf_bounds, __pyx_tuple__4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_ppf_bounds, __pyx_tuple__3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyNumber_Subtract(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(PyObject_SetItem(__pyx_v_ppf_bounds, __pyx_tuple__4, __pyx_t_10) < 0)) __PYX_ERR(0, 305, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
0306: else:
+0307: ppf_bounds[:, 1] = 1.0
/*else*/ {
if (unlikely(PyObject_SetItem(__pyx_v_ppf_bounds, __pyx_tuple__4, __pyx_float_1_0) < 0)) __PYX_ERR(0, 307, __pyx_L1_error)
}
__pyx_L9:;
0308:
+0309: prior_transform_args = {'s':s, 'scale':scale, 'ppf_bounds':ppf_bounds}
__pyx_t_10 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_s, __pyx_v_s) < 0) __PYX_ERR(0, 309, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 309, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_ppf_bounds, __pyx_v_ppf_bounds) < 0) __PYX_ERR(0, 309, __pyx_L1_error) __pyx_v_prior_transform_args = ((PyObject*)__pyx_t_10); __pyx_t_10 = 0;
+0310: loglike_args = {'keys':keys, 'is_scale_parameter':is_scale_parameter, 'scaled_guesses':scaled_guesses,
__pyx_t_10 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 310, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 310, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_scaled_guesses, __pyx_v_scaled_guesses) < 0) __PYX_ERR(0, 310, __pyx_L1_error)
+0311: 'flat_guess_range':flat_guess_range, 'x':x, 'Tf':Tf, 'Nf':Nf, 'contactMatrix':contactMatrix,
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_flat_guess_range, __pyx_v_flat_guess_range) < 0) __PYX_ERR(0, 310, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_x, ((PyObject *)__pyx_v_x)) < 0) __PYX_ERR(0, 310, __pyx_L1_error) __pyx_t_9 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_Tf, __pyx_t_9) < 0) __PYX_ERR(0, 310, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_Nf, __pyx_t_9) < 0) __PYX_ERR(0, 310, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 310, __pyx_L1_error)
+0312: 's':s, 'scale':scale, 'tangent':tangent}
if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_s, __pyx_v_s) < 0) __PYX_ERR(0, 310, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 310, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 310, __pyx_L1_error) __pyx_v_loglike_args = ((PyObject*)__pyx_t_10); __pyx_t_10 = 0;
0313:
+0314: result = nested_sampling(self._nested_sampling_loglike, self._nested_sampling_prior_transform, k, queue_size,
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_nested_sampling); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nested_sampling_loglike); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nested_sampling_prior_transform); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7);
0315: max_workers, verbose, method, npoints, max_iter, dlogz, decline_factor, loglike_args,
+0316: prior_transform_args)
__pyx_t_4 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[14] = {__pyx_t_4, __pyx_t_11, __pyx_t_1, __pyx_t_7, __pyx_v_queue_size, __pyx_v_max_workers, __pyx_v_verbose, __pyx_v_method, __pyx_v_npoints, __pyx_v_max_iter, __pyx_v_dlogz, __pyx_v_decline_factor, __pyx_v_loglike_args, __pyx_v_prior_transform_args}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 13+__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[14] = {__pyx_t_4, __pyx_t_11, __pyx_t_1, __pyx_t_7, __pyx_v_queue_size, __pyx_v_max_workers, __pyx_v_verbose, __pyx_v_method, __pyx_v_npoints, __pyx_v_max_iter, __pyx_v_dlogz, __pyx_v_decline_factor, __pyx_v_loglike_args, __pyx_v_prior_transform_args}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 13+__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_5 = PyTuple_New(13+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_8, __pyx_t_7); __Pyx_INCREF(__pyx_v_queue_size); __Pyx_GIVEREF(__pyx_v_queue_size); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_8, __pyx_v_queue_size); __Pyx_INCREF(__pyx_v_max_workers); __Pyx_GIVEREF(__pyx_v_max_workers); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_8, __pyx_v_max_workers); __Pyx_INCREF(__pyx_v_verbose); __Pyx_GIVEREF(__pyx_v_verbose); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_8, __pyx_v_verbose); __Pyx_INCREF(__pyx_v_method); __Pyx_GIVEREF(__pyx_v_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_8, __pyx_v_method); __Pyx_INCREF(__pyx_v_npoints); __Pyx_GIVEREF(__pyx_v_npoints); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_8, __pyx_v_npoints); __Pyx_INCREF(__pyx_v_max_iter); __Pyx_GIVEREF(__pyx_v_max_iter); PyTuple_SET_ITEM(__pyx_t_5, 8+__pyx_t_8, __pyx_v_max_iter); __Pyx_INCREF(__pyx_v_dlogz); __Pyx_GIVEREF(__pyx_v_dlogz); PyTuple_SET_ITEM(__pyx_t_5, 9+__pyx_t_8, __pyx_v_dlogz); __Pyx_INCREF(__pyx_v_decline_factor); __Pyx_GIVEREF(__pyx_v_decline_factor); PyTuple_SET_ITEM(__pyx_t_5, 10+__pyx_t_8, __pyx_v_decline_factor); __Pyx_INCREF(__pyx_v_loglike_args); __Pyx_GIVEREF(__pyx_v_loglike_args); PyTuple_SET_ITEM(__pyx_t_5, 11+__pyx_t_8, __pyx_v_loglike_args); __Pyx_INCREF(__pyx_v_prior_transform_args); __Pyx_GIVEREF(__pyx_v_prior_transform_args); PyTuple_SET_ITEM(__pyx_t_5, 12+__pyx_t_8, __pyx_v_prior_transform_args); __pyx_t_11 = 0; __pyx_t_1 = 0; __pyx_t_7 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_result = __pyx_t_10; __pyx_t_10 = 0;
0317:
+0318: log_evidence = result.logz
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logz); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_v_log_evidence = __pyx_t_10; __pyx_t_10 = 0;
0319:
+0320: unflattened_samples = []
__pyx_t_10 = PyList_New(0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 320, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_v_unflattened_samples = ((PyObject*)__pyx_t_10); __pyx_t_10 = 0;
+0321: for sample in result.samples:
__pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_samples); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (likely(PyList_CheckExact(__pyx_t_10)) || PyTuple_CheckExact(__pyx_t_10)) { __pyx_t_9 = __pyx_t_10; __Pyx_INCREF(__pyx_t_9); __pyx_t_6 = 0; __pyx_t_14 = NULL; } else { __pyx_t_6 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_14 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 321, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; for (;;) { if (likely(!__pyx_t_14)) { if (likely(PyList_CheckExact(__pyx_t_9))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_9)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_10 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_10); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 321, __pyx_L1_error) #else __pyx_t_10 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_9)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_10 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_10); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 321, __pyx_L1_error) #else __pyx_t_10 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); #endif } } else { __pyx_t_10 = __pyx_t_14(__pyx_t_9); if (unlikely(!__pyx_t_10)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 321, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_10); } __Pyx_XDECREF_SET(__pyx_v_sample, __pyx_t_10); __pyx_t_10 = 0; /* … */ } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+0322: sample_unflat = self._unflatten_parameters(sample, flat_guess_range, is_scale_parameter, scaled_guesses)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_sample, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_10); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_v_sample, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_10); } else #endif { __pyx_t_1 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_v_sample); __Pyx_GIVEREF(__pyx_v_sample); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_8, __pyx_v_sample); __Pyx_INCREF(__pyx_v_flat_guess_range); __Pyx_GIVEREF(__pyx_v_flat_guess_range); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_8, __pyx_v_flat_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_8, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_guesses); __Pyx_GIVEREF(__pyx_v_scaled_guesses); PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_8, __pyx_v_scaled_guesses); __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_sample_unflat, __pyx_t_10); __pyx_t_10 = 0;
+0323: unflattened_samples.append(sample)
__pyx_t_15 = __Pyx_PyList_Append(__pyx_v_unflattened_samples, __pyx_v_sample); if (unlikely(__pyx_t_15 == ((int)-1))) __PYX_ERR(0, 323, __pyx_L1_error)
+0324: weighted_samples = (unflattened_samples, result.weights)
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_weights); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_unflattened_samples); __Pyx_GIVEREF(__pyx_v_unflattened_samples); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_unflattened_samples); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_9); __pyx_t_9 = 0; __pyx_v_weighted_samples = ((PyObject*)__pyx_t_10); __pyx_t_10 = 0;
0325:
+0326: return log_evidence, weighted_samples
__Pyx_XDECREF(__pyx_r); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_log_evidence); __Pyx_GIVEREF(__pyx_v_log_evidence); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_log_evidence); __Pyx_INCREF(__pyx_v_weighted_samples); __Pyx_GIVEREF(__pyx_v_weighted_samples); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_weighted_samples); __pyx_r = __pyx_t_10; __pyx_t_10 = 0; goto __pyx_L0;
0327:
0328:
+0329: def _infer_control_to_minimize(self, params, grad=0, keys=None, bounds=None, x=None, Tf=None, Nf=None, generator=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15_infer_control_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_14_infer_control_to_minimize[] = "Objective function for minimization call in infer_control.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15_infer_control_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_grad = 0;
PyObject *__pyx_v_keys = 0;
CYTHON_UNUSED PyObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_s = 0;
PyObject *__pyx_v_scale = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_infer_control_to_minimize (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_grad,&__pyx_n_s_keys,&__pyx_n_s_bounds,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_generator,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_s,&__pyx_n_s_scale,0};
PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)__pyx_int_0);
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_14_infer_control_to_minimize(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_grad, PyObject *__pyx_v_keys, CYTHON_UNUSED PyObject *__pyx_v_bounds, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_generator, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_s, PyObject *__pyx_v_scale) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_kwargs = NULL;
PyObject *__pyx_v_contactMatrix = NULL;
PyObject *__pyx_v_minus_logp = NULL;
PyObject *__pyx_7genexpr__pyx_v_i = NULL;
PyObject *__pyx_7genexpr__pyx_v_k = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_infer_control_to_minimize", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type._infer_control_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_XDECREF(__pyx_v_contactMatrix);
__Pyx_XDECREF(__pyx_v_minus_logp);
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_i);
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_k);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0330: intervention_fun=None, tangent=None, s=None, scale=None):
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grad);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scale);
if (value) { values[11] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_infer_control_to_minimize") < 0)) __PYX_ERR(0, 329, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_grad = values[1];
__pyx_v_keys = values[2];
__pyx_v_bounds = values[3];
__pyx_v_x = values[4];
__pyx_v_Tf = values[5];
__pyx_v_Nf = values[6];
__pyx_v_generator = values[7];
__pyx_v_intervention_fun = values[8];
__pyx_v_tangent = values[9];
__pyx_v_s = values[10];
__pyx_v_scale = values[11];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_infer_control_to_minimize", 0, 1, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 329, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._infer_control_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_14_infer_control_to_minimize(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_grad, __pyx_v_keys, __pyx_v_bounds, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_generator, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_s, __pyx_v_scale);
0331: """Objective function for minimization call in infer_control."""
+0332: parameters = self.make_params_dict()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_parameters = __pyx_t_1; __pyx_t_1 = 0;
+0333: model =self.make_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_model = __pyx_t_1; __pyx_t_1 = 0;
+0334: kwargs = {k:params[i] for (i, k) in enumerate(keys)}
{ /* enter inner scope */
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_int_0);
__pyx_t_2 = __pyx_int_0;
if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) {
__pyx_t_3 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
__pyx_t_5 = NULL;
} else {
__pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L5_error)
}
for (;;) {
if (likely(!__pyx_t_5)) {
if (likely(PyList_CheckExact(__pyx_t_3))) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 334, __pyx_L5_error)
#else
__pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 334, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
} else {
if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 334, __pyx_L5_error)
#else
__pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 334, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
}
} else {
__pyx_t_6 = __pyx_t_5(__pyx_t_3);
if (unlikely(!__pyx_t_6)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 334, __pyx_L5_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_6);
}
__Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_k, __pyx_t_6);
__pyx_t_6 = 0;
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_i, __pyx_t_2);
__pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 334, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2);
__pyx_t_2 = __pyx_t_6;
__pyx_t_6 = 0;
__pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_params, __pyx_7genexpr__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 334, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_7genexpr__pyx_v_k, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 334, __pyx_L5_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_i); __pyx_7genexpr__pyx_v_i = 0;
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_k); __pyx_7genexpr__pyx_v_k = 0;
goto __pyx_L8_exit_scope;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_i); __pyx_7genexpr__pyx_v_i = 0;
__Pyx_XDECREF(__pyx_7genexpr__pyx_v_k); __pyx_7genexpr__pyx_v_k = 0;
goto __pyx_L1_error;
__pyx_L8_exit_scope:;
} /* exit inner scope */
__pyx_v_kwargs = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+0335: if intervention_fun is None:
__pyx_t_7 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_8 = (__pyx_t_7 != 0);
if (__pyx_t_8) {
/* … */
goto __pyx_L9;
}
+0336: contactMatrix=generator.constant_contactMatrix(**kwargs)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_contactMatrix = __pyx_t_2; __pyx_t_2 = 0;
0337: else:
+0338: contactMatrix=generator.intervention_custom_temporal(intervention_fun, **kwargs)
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 338, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 338, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_intervention_fun);
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 338, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_contactMatrix = __pyx_t_3;
__pyx_t_3 = 0;
}
__pyx_L9:;
+0339: if tangent:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 339, __pyx_L1_error) if (__pyx_t_8) { /* … */ goto __pyx_L10; }
+0340: minus_logp = self.obtain_log_p_for_traj_tangent_space(x, Tf, Nf, model, contactMatrix)
__pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_v_x, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 340, __pyx_L1_error) __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 340, __pyx_L1_error) __pyx_t_3 = PyFloat_FromDouble(((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_tangent_space(__pyx_v_self, __pyx_t_9, __pyx_t_10, __pyx_t_4, __pyx_v_model, __pyx_v_contactMatrix)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; __pyx_v_minus_logp = __pyx_t_3; __pyx_t_3 = 0;
0341: else:
+0342: minus_logp = self.obtain_log_p_for_traj(x, Tf, Nf, model, contactMatrix)
/*else*/ {
__pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_v_x, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 342, __pyx_L1_error)
__pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error)
__pyx_t_11 = __Pyx_PyInt_As_int(__pyx_v_Nf); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error)
__pyx_t_3 = PyFloat_FromDouble(((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj(__pyx_v_self, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_v_model, __pyx_v_contactMatrix)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 342, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__pyx_t_9.memview = NULL;
__pyx_t_9.data = NULL;
__pyx_v_minus_logp = __pyx_t_3;
__pyx_t_3 = 0;
}
__pyx_L10:;
+0343: minus_logp -= np.sum(lognorm.logpdf(params, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_params); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_s); __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 343, __pyx_L1_error) __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_12, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_13); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceSubtract(__pyx_v_minus_logp, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_minus_logp, __pyx_t_2); __pyx_t_2 = 0;
+0344: return minus_logp
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_minus_logp); __pyx_r = __pyx_v_minus_logp; goto __pyx_L0;
0345:
0346:
+0347: def infer_control(self, keys, guess, stds, x, Tf, Nf, generator, bounds,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_17infer_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_16infer_control[] = "\n Compute the maximum a-posteriori (MAP) estimate of the change of control parameters for a SIR type model in\n lockdown. The lockdown is modelled by scaling the contact matrices for contact at work, school, and other\n (but not home) uniformly in all age groups. This function infers the scaling parameters assuming that full data\n on all classes is available (with latent variables, use SIR_type.latent_infer_control).\n\n Parameters\n ----------\n guess: numpy.array\n Prior expectation (and initial guess) for the control parameter values\n stds: numpy.array\n Standard deviations for the log normal prior of the control parameters\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n Nf: float\n Number of data points along the trajectory\n generator: pyross.contactMatrix\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n bounds: 2d numpy.array\n Bounds for the parameters (number of parameters x 2).\n Note that the upper bound must be smaller than the absolute physical upper bound minus epsilon\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`, where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO). If not set, assume intervention that's constant in time and infer (aW, aS, aO).\n tangent: bool, optional\n Set to True to use tangent space inference. Default is false.\n verbose: bool, optional\n Set to True to see intermediate outputs from the optimizer.\n ftol: double\n Relative tolerance of logp\n eps: double\n Disallow paramters ""closer than `eps` to the boundary (to avoid numerical instabilities).\n global_max_iter: int, optional\n Number of global optimisations performed.\n local_max_iter: int, optional\n Number of local optimisation performed.\n global_atol: float\n The absolute tolerance for global optimisation.\n enable_global: bool, optional\n Set to True to enable global optimisation.\n enable_local: bool, optional\n Set to True to enable local optimisation.\n cma_processes: int, optional\n Number of parallel processes used for global optimisation.\n cma_population: int, optional\n The number of samples used in each step of the CMA algorithm.\n cma_stds: int, optional\n The standard deviation used in cma global optimisation. If not specified, `cma_stds` is set to `stds`.\n\n Returns\n -------\n res: numpy.array\n MAP estimate of the control parameters\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_17infer_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_guess = 0;
PyObject *__pyx_v_stds = 0;
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_ftol = 0;
PyObject *__pyx_v_global_max_iter = 0;
PyObject *__pyx_v_local_max_iter = 0;
PyObject *__pyx_v_global_atol = 0;
PyObject *__pyx_v_enable_global = 0;
PyObject *__pyx_v_enable_local = 0;
PyObject *__pyx_v_cma_processes = 0;
PyObject *__pyx_v_cma_population = 0;
PyObject *__pyx_v_cma_stds = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_control (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keys,&__pyx_n_s_guess,&__pyx_n_s_stds,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_generator,&__pyx_n_s_bounds,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_ftol,&__pyx_n_s_global_max_iter,&__pyx_n_s_local_max_iter,&__pyx_n_s_global_atol,&__pyx_n_s_enable_global,&__pyx_n_s_enable_local,&__pyx_n_s_cma_processes,&__pyx_n_s_cma_population,&__pyx_n_s_cma_stds,0};
PyObject* values[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_16infer_control(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_keys, PyObject *__pyx_v_guess, PyObject *__pyx_v_stds, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_generator, PyObject *__pyx_v_bounds, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, PyObject *__pyx_v_ftol, PyObject *__pyx_v_global_max_iter, PyObject *__pyx_v_local_max_iter, PyObject *__pyx_v_global_atol, PyObject *__pyx_v_enable_global, PyObject *__pyx_v_enable_local, PyObject *__pyx_v_cma_processes, PyObject *__pyx_v_cma_population, PyObject *__pyx_v_cma_stds) {
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_scale = NULL;
PyObject *__pyx_v_minimize_args = NULL;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infer_control", 0);
__Pyx_INCREF(__pyx_v_cma_stds);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_control", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_minimize_args);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XDECREF(__pyx_v_cma_stds);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0348: intervention_fun=None, tangent=False,
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_False);
+0349: verbose=False, ftol=1e-6,
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)__pyx_float_1eneg_6);
values[12] = ((PyObject *)__pyx_int_100);
values[13] = ((PyObject *)__pyx_int_100);
values[14] = ((PyObject *)__pyx_float_1_);
+0350: global_max_iter=100, local_max_iter=100, global_atol=1., enable_global=True,
values[15] = ((PyObject *)Py_True);
+0351: enable_local=True, cma_processes=0, cma_population=16, cma_stds=None):
values[16] = ((PyObject *)Py_True);
values[17] = ((PyObject *)__pyx_int_0);
values[18] = ((PyObject *)__pyx_int_16);
values[19] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_guess)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 0, 8, 20, 1); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 0, 8, 20, 2); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 0, 8, 20, 3); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 0, 8, 20, 4); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 0, 8, 20, 5); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 0, 8, 20, 6); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("infer_control", 0, 8, 20, 7); __PYX_ERR(0, 347, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ftol);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_max_iter);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_max_iter);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_atol);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_global);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_local);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_processes);
if (value) { values[17] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 18:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_population);
if (value) { values[18] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 19:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_stds);
if (value) { values[19] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "infer_control") < 0)) __PYX_ERR(0, 347, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_keys = values[0];
__pyx_v_guess = values[1];
__pyx_v_stds = values[2];
__pyx_v_x = values[3];
__pyx_v_Tf = values[4];
__pyx_v_Nf = values[5];
__pyx_v_generator = values[6];
__pyx_v_bounds = values[7];
__pyx_v_intervention_fun = values[8];
__pyx_v_tangent = values[9];
__pyx_v_verbose = values[10];
__pyx_v_ftol = values[11];
__pyx_v_global_max_iter = values[12];
__pyx_v_local_max_iter = values[13];
__pyx_v_global_atol = values[14];
__pyx_v_enable_global = values[15];
__pyx_v_enable_local = values[16];
__pyx_v_cma_processes = values[17];
__pyx_v_cma_population = values[18];
__pyx_v_cma_stds = values[19];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("infer_control", 0, 8, 20, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 347, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.infer_control", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_16infer_control(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_keys, __pyx_v_guess, __pyx_v_stds, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_generator, __pyx_v_bounds, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_ftol, __pyx_v_global_max_iter, __pyx_v_local_max_iter, __pyx_v_global_atol, __pyx_v_enable_global, __pyx_v_enable_local, __pyx_v_cma_processes, __pyx_v_cma_population, __pyx_v_cma_stds);
0352: """
0353: Compute the maximum a-posteriori (MAP) estimate of the change of control parameters for a SIR type model in
0354: lockdown. The lockdown is modelled by scaling the contact matrices for contact at work, school, and other
0355: (but not home) uniformly in all age groups. This function infers the scaling parameters assuming that full data
0356: on all classes is available (with latent variables, use SIR_type.latent_infer_control).
0357:
0358: Parameters
0359: ----------
0360: guess: numpy.array
0361: Prior expectation (and initial guess) for the control parameter values
0362: stds: numpy.array
0363: Standard deviations for the log normal prior of the control parameters
0364: x: 2d numpy.array
0365: Observed trajectory (number of data points x (age groups * model classes))
0366: Tf: float
0367: Total time of the trajectory
0368: Nf: float
0369: Number of data points along the trajectory
0370: generator: pyross.contactMatrix
0371: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
0372: parameters.
0373: bounds: 2d numpy.array
0374: Bounds for the parameters (number of parameters x 2).
0375: Note that the upper bound must be smaller than the absolute physical upper bound minus epsilon
0376: intervention_fun: callable, optional
0377: The calling signature is `intervention_func(t, **kwargs)`, where t is time and kwargs are other keyword arguments for the function.
0378: The function must return (aW, aS, aO). If not set, assume intervention that's constant in time and infer (aW, aS, aO).
0379: tangent: bool, optional
0380: Set to True to use tangent space inference. Default is false.
0381: verbose: bool, optional
0382: Set to True to see intermediate outputs from the optimizer.
0383: ftol: double
0384: Relative tolerance of logp
0385: eps: double
0386: Disallow paramters closer than `eps` to the boundary (to avoid numerical instabilities).
0387: global_max_iter: int, optional
0388: Number of global optimisations performed.
0389: local_max_iter: int, optional
0390: Number of local optimisation performed.
0391: global_atol: float
0392: The absolute tolerance for global optimisation.
0393: enable_global: bool, optional
0394: Set to True to enable global optimisation.
0395: enable_local: bool, optional
0396: Set to True to enable local optimisation.
0397: cma_processes: int, optional
0398: Number of parallel processes used for global optimisation.
0399: cma_population: int, optional
0400: The number of samples used in each step of the CMA algorithm.
0401: cma_stds: int, optional
0402: The standard deviation used in cma global optimisation. If not specified, `cma_stds` is set to `stds`.
0403:
0404: Returns
0405: -------
0406: res: numpy.array
0407: MAP estimate of the control parameters
0408: """
+0409: s, scale = pyross.utils.make_log_norm_dist(guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_guess, __pyx_v_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_guess); __Pyx_INCREF(__pyx_v_stds); __Pyx_GIVEREF(__pyx_v_stds); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_stds); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 409, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_3), 2) < 0) __PYX_ERR(0, 409, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 409, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_s = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_scale = __pyx_t_5; __pyx_t_5 = 0;
+0410: if cma_stds is None:
__pyx_t_7 = (__pyx_v_cma_stds == Py_None);
__pyx_t_8 = (__pyx_t_7 != 0);
if (__pyx_t_8) {
/* … */
}
0411: # Use prior standard deviations here
+0412: cma_stds = stds
__Pyx_INCREF(__pyx_v_stds); __Pyx_DECREF_SET(__pyx_v_cma_stds, __pyx_v_stds);
0413:
+0414: minimize_args = {'keys':keys, 'bounds':bounds, 'x':x, 'Tf':Tf, 'Nf':Nf, 'generator':generator, 's':s, 'scale':scale,
__pyx_t_1 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 414, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_bounds, __pyx_v_bounds) < 0) __PYX_ERR(0, 414, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_x, __pyx_v_x) < 0) __PYX_ERR(0, 414, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Tf, __pyx_v_Tf) < 0) __PYX_ERR(0, 414, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Nf, __pyx_v_Nf) < 0) __PYX_ERR(0, 414, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 414, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_s, __pyx_v_s) < 0) __PYX_ERR(0, 414, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 414, __pyx_L1_error)
+0415: 'intervention_fun': intervention_fun, 'tangent': tangent}
if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0) __PYX_ERR(0, 414, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 414, __pyx_L1_error) __pyx_v_minimize_args = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+0416: res = minimization(self._infer_control_to_minimize, guess, bounds, ftol=ftol, global_max_iter=global_max_iter,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_minimization); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infer_control_to_minimize); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __Pyx_INCREF(__pyx_v_guess); __Pyx_GIVEREF(__pyx_v_guess); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_guess); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_bounds); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_ftol, __pyx_v_ftol) < 0) __PYX_ERR(0, 416, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_global_max_iter, __pyx_v_global_max_iter) < 0) __PYX_ERR(0, 416, __pyx_L1_error) /* … */ __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 416, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_res = __pyx_t_3; __pyx_t_3 = 0;
+0417: local_max_iter=local_max_iter, global_atol=global_atol,
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_local_max_iter, __pyx_v_local_max_iter) < 0) __PYX_ERR(0, 416, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_global_atol, __pyx_v_global_atol) < 0) __PYX_ERR(0, 416, __pyx_L1_error)
+0418: enable_global=enable_global, enable_local=enable_local, cma_processes=cma_processes,
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_enable_global, __pyx_v_enable_global) < 0) __PYX_ERR(0, 416, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_enable_local, __pyx_v_enable_local) < 0) __PYX_ERR(0, 416, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cma_processes, __pyx_v_cma_processes) < 0) __PYX_ERR(0, 416, __pyx_L1_error)
+0419: cma_population=cma_population, cma_stds=cma_stds, verbose=verbose, args_dict=minimize_args)
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cma_population, __pyx_v_cma_population) < 0) __PYX_ERR(0, 416, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cma_stds, __pyx_v_cma_stds) < 0) __PYX_ERR(0, 416, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 416, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_args_dict, __pyx_v_minimize_args) < 0) __PYX_ERR(0, 416, __pyx_L1_error)
0420:
+0421: return res[0]
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
0422:
0423:
+0424: def compute_hessian(self, keys, maps, prior_mean, prior_stds, x, Tf, Nf, contactMatrix, eps=1.e-3, tangent=False,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_19compute_hessian(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_18compute_hessian[] = "\n Computes the Hessian of the MAP estimate.\n\n Parameters\n ----------\n keys: list\n A list of parameter names that are inferred\n maps: numpy.array\n MAP estimates\n prior_mean: numpy.array\n The mean of the prior (should be the same as \"guess\" for infer_parameters)\n prior_stds: numpy.array\n The standard deviations of the prior (same as \"stds\" for infer_parameters)\n x: 2d numpy.array\n Observed trajectory (number of data points x (age groups * model classes))\n Tf: float\n Total time of the trajectory\n Nf: float\n Number of data points along the trajectory\n contactMatrix: callable\n A function that takes time (t) as an argument and returns the contactMatrix\n eps: float or numpy.array, optional\n The step size of the Hessian calculation, default=1e-3\n fd_method: str, optional\n The type of finite-difference scheme used to compute the hessian, supports \"forward\" and \"central\".\n\n Returns\n -------\n hess: 2d numpy.array\n The Hessian\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_19compute_hessian(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_maps = 0;
PyObject *__pyx_v_prior_mean = 0;
PyObject *__pyx_v_prior_stds = 0;
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_hessian (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keys,&__pyx_n_s_maps,&__pyx_n_s_prior_mean,&__pyx_n_s_prior_stds,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_eps,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_fd_method,0};
PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
values[8] = ((PyObject *)__pyx_float_1_eneg_3);
values[9] = ((PyObject *)Py_False);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_18compute_hessian(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_keys, PyObject *__pyx_v_maps, PyObject *__pyx_v_prior_mean, PyObject *__pyx_v_prior_stds, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_eps, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_fd_method) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__compute_hessian *__pyx_cur_scope;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_maps = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_flat_prior_mean = NULL;
PyObject *__pyx_v_flat_prior_stds = NULL;
PyObject *__pyx_v_minuslogP = 0;
PyObject *__pyx_v_hess = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_hessian", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct__compute_hessian *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct__compute_hessian(__pyx_ptype_6pyross_9inference___pyx_scope_struct__compute_hessian, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct__compute_hessian *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 424, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_keys = __pyx_v_keys;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_keys);
__pyx_cur_scope->__pyx_v_x = __pyx_v_x;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_x);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_x);
__pyx_cur_scope->__pyx_v_Tf = __pyx_v_Tf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
__pyx_cur_scope->__pyx_v_Nf = __pyx_v_Nf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_cur_scope->__pyx_v_tangent = __pyx_v_tangent;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_tangent);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tangent);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("pyross.inference.SIR_type.compute_hessian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_maps);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_flat_prior_mean);
__Pyx_XDECREF(__pyx_v_flat_prior_stds);
__Pyx_XDECREF(__pyx_v_minuslogP);
__Pyx_XDECREF(__pyx_v_hess);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__compute_hessian {
PyObject_HEAD
PyObject *__pyx_v_Nf;
PyObject *__pyx_v_Tf;
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_flat_maps_range;
PyObject *__pyx_v_is_scale_parameter;
PyObject *__pyx_v_keys;
PyObject *__pyx_v_s;
PyObject *__pyx_v_scale;
PyObject *__pyx_v_scaled_maps;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_tangent;
PyObject *__pyx_v_x;
};
+0425: infer_scale_parameter=False, fd_method="central"):
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)__pyx_n_u_central);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian", 0, 8, 12, 1); __PYX_ERR(0, 424, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_mean)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian", 0, 8, 12, 2); __PYX_ERR(0, 424, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian", 0, 8, 12, 3); __PYX_ERR(0, 424, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian", 0, 8, 12, 4); __PYX_ERR(0, 424, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian", 0, 8, 12, 5); __PYX_ERR(0, 424, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian", 0, 8, 12, 6); __PYX_ERR(0, 424, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian", 0, 8, 12, 7); __PYX_ERR(0, 424, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[11] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_hessian") < 0)) __PYX_ERR(0, 424, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_keys = values[0];
__pyx_v_maps = values[1];
__pyx_v_prior_mean = values[2];
__pyx_v_prior_stds = values[3];
__pyx_v_x = values[4];
__pyx_v_Tf = values[5];
__pyx_v_Nf = values[6];
__pyx_v_contactMatrix = values[7];
__pyx_v_eps = values[8];
__pyx_v_tangent = values[9];
__pyx_v_infer_scale_parameter = values[10];
__pyx_v_fd_method = values[11];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("compute_hessian", 0, 8, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 424, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.compute_hessian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_18compute_hessian(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_keys, __pyx_v_maps, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_eps, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_fd_method);
0426: '''
0427: Computes the Hessian of the MAP estimate.
0428:
0429: Parameters
0430: ----------
0431: keys: list
0432: A list of parameter names that are inferred
0433: maps: numpy.array
0434: MAP estimates
0435: prior_mean: numpy.array
0436: The mean of the prior (should be the same as "guess" for infer_parameters)
0437: prior_stds: numpy.array
0438: The standard deviations of the prior (same as "stds" for infer_parameters)
0439: x: 2d numpy.array
0440: Observed trajectory (number of data points x (age groups * model classes))
0441: Tf: float
0442: Total time of the trajectory
0443: Nf: float
0444: Number of data points along the trajectory
0445: contactMatrix: callable
0446: A function that takes time (t) as an argument and returns the contactMatrix
0447: eps: float or numpy.array, optional
0448: The step size of the Hessian calculation, default=1e-3
0449: fd_method: str, optional
0450: The type of finite-difference scheme used to compute the hessian, supports "forward" and "central".
0451:
0452: Returns
0453: -------
0454: hess: 2d numpy.array
0455: The Hessian
0456: '''
+0457: bounds = np.zeros((len(maps), 2)) # This does not matter here.
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = PyObject_Length(__pyx_v_maps); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 457, __pyx_L1_error) __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 457, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
+0458: flat_maps, _, _, flat_maps_range, is_scale_parameter, scaled_maps \
__pyx_v_flat_maps = __pyx_t_3; __pyx_t_3 = 0; __pyx_v__ = __pyx_t_2; __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_5); __pyx_t_5 = 0; __Pyx_GIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_v_flat_maps_range = __pyx_t_7; __pyx_t_7 = 0; __Pyx_GIVEREF(__pyx_t_8); __pyx_cur_scope->__pyx_v_is_scale_parameter = __pyx_t_8; __pyx_t_8 = 0; __Pyx_GIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_v_scaled_maps = __pyx_t_9; __pyx_t_9 = 0;
+0459: = self._flatten_parameters(maps, prior_stds, bounds, infer_scale_parameter)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_2 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_6, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_6, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 459, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 458, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); __pyx_t_7 = PyList_GET_ITEM(sequence, 3); __pyx_t_8 = PyList_GET_ITEM(sequence, 4); __pyx_t_9 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_3,&__pyx_t_2,&__pyx_t_5,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 458, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_3,&__pyx_t_2,&__pyx_t_5,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 458, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 6) < 0) __PYX_ERR(0, 458, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 458, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+0460: flat_prior_mean, flat_prior_stds, _, _, _, _ \
__pyx_v_flat_prior_mean = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_flat_prior_stds = __pyx_t_7; __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_3); __pyx_t_3 = 0;
+0461: = self._flatten_parameters(prior_mean, prior_stds, bounds, infer_scale_parameter)
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_v_prior_mean); __Pyx_GIVEREF(__pyx_v_prior_mean); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_prior_mean); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 460, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); __pyx_t_8 = PyList_GET_ITEM(sequence, 2); __pyx_t_5 = PyList_GET_ITEM(sequence, 3); __pyx_t_2 = PyList_GET_ITEM(sequence, 4); __pyx_t_3 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_9,&__pyx_t_7,&__pyx_t_8,&__pyx_t_5,&__pyx_t_2,&__pyx_t_3}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_9,&__pyx_t_7,&__pyx_t_8,&__pyx_t_5,&__pyx_t_2,&__pyx_t_3}; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 460, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 6) < 0) __PYX_ERR(0, 460, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 460, __pyx_L1_error) __pyx_L6_unpacking_done:; }
0462:
+0463: s, scale = pyross.utils.make_log_norm_dist(flat_prior_mean, flat_prior_stds)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_flat_prior_mean); __Pyx_GIVEREF(__pyx_v_flat_prior_mean); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_flat_prior_mean); __Pyx_INCREF(__pyx_v_flat_prior_stds); __Pyx_GIVEREF(__pyx_v_flat_prior_stds); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_flat_prior_stds); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 463, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_11(__pyx_t_2); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_5 = __pyx_t_11(__pyx_t_2); if (unlikely(!__pyx_t_5)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_2), 2) < 0) __PYX_ERR(0, 463, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 463, __pyx_L1_error) __pyx_L8_unpacking_done:; } __Pyx_GIVEREF(__pyx_t_3); __pyx_cur_scope->__pyx_v_s = __pyx_t_3; __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_scale = __pyx_t_5; __pyx_t_5 = 0;
+0464: def minuslogP(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15compute_hessian_1minuslogP(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_15compute_hessian_1minuslogP = {"minuslogP", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_15compute_hessian_1minuslogP, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_15compute_hessian_1minuslogP(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minuslogP (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_15compute_hessian_minuslogP(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_15compute_hessian_minuslogP(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__compute_hessian *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct__compute_hessian *__pyx_outer_scope;
PyObject *__pyx_v_y_unflat = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_minuslogp = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minuslogP", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct__compute_hessian *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.compute_hessian.minuslogP", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_y_unflat);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_minuslogp);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__6 = PyTuple_Pack(4, __pyx_n_s_y, __pyx_n_s_y_unflat, __pyx_n_s_parameters, __pyx_n_s_minuslogp); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 464, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__6);
__Pyx_GIVEREF(__pyx_tuple__6);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_15compute_hessian_1minuslogP, 0, __pyx_n_s_compute_hessian_locals_minuslogP, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__7)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 464, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_minuslogP = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__7 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__6, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_minuslogP, 464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__7)) __PYX_ERR(0, 464, __pyx_L1_error)
+0465: y_unflat = self._unflatten_parameters(y, flat_maps_range, is_scale_parameter, scaled_maps)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 465, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 465, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_flat_maps_range)) { __Pyx_RaiseClosureNameError("flat_maps_range"); __PYX_ERR(0, 465, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_is_scale_parameter)) { __Pyx_RaiseClosureNameError("is_scale_parameter"); __PYX_ERR(0, 465, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_scaled_maps)) { __Pyx_RaiseClosureNameError("scaled_maps"); __PYX_ERR(0, 465, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 465, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_y);
__Pyx_GIVEREF(__pyx_v_y);
PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_y);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_scaled_maps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_scaled_maps);
PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_scaled_maps);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 465, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_y_unflat = __pyx_t_1;
__pyx_t_1 = 0;
+0466: parameters = self.fill_params_dict(keys, y_unflat)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 466, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 466, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_keys)) { __Pyx_RaiseClosureNameError("keys"); __PYX_ERR(0, 466, __pyx_L1_error) }
__pyx_t_5 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 466, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__pyx_t_5) {
__Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_keys);
PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_keys);
__Pyx_INCREF(__pyx_v_y_unflat);
__Pyx_GIVEREF(__pyx_v_y_unflat);
PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_y_unflat);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 466, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_parameters = __pyx_t_1;
__pyx_t_1 = 0;
+0467: minuslogp = self.obtain_minus_log_p(parameters, x, Tf, Nf, contactMatrix, tangent=tangent)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 467, __pyx_L1_error) }
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_obtain_minus_log_p); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 467, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(!__pyx_cur_scope->__pyx_v_x)) { __Pyx_RaiseClosureNameError("x"); __PYX_ERR(0, 467, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 467, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_Nf)) { __Pyx_RaiseClosureNameError("Nf"); __PYX_ERR(0, 467, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 467, __pyx_L1_error) }
__pyx_t_2 = PyTuple_New(5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 467, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_parameters);
__Pyx_GIVEREF(__pyx_v_parameters);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_x);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_x);
PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_cur_scope->__pyx_v_x);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_cur_scope->__pyx_v_Tf);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf);
PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_cur_scope->__pyx_v_Nf);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 467, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (unlikely(!__pyx_cur_scope->__pyx_v_tangent)) { __Pyx_RaiseClosureNameError("tangent"); __PYX_ERR(0, 467, __pyx_L1_error) }
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_tangent, __pyx_cur_scope->__pyx_v_tangent) < 0) __PYX_ERR(0, 467, __pyx_L1_error)
__pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 467, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_v_minuslogp = __pyx_t_5;
__pyx_t_5 = 0;
+0468: minuslogp -= np.sum(lognorm.logpdf(y, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_cur_scope->__pyx_v_s)) { __Pyx_RaiseClosureNameError("s"); __PYX_ERR(0, 468, __pyx_L1_error) } __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_y); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_s); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_cur_scope->__pyx_v_s); __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (unlikely(!__pyx_cur_scope->__pyx_v_scale)) { __Pyx_RaiseClosureNameError("scale"); __PYX_ERR(0, 468, __pyx_L1_error) } if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_scale, __pyx_cur_scope->__pyx_v_scale) < 0) __PYX_ERR(0, 468, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceSubtract(__pyx_v_minuslogp, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_minuslogp, __pyx_t_2); __pyx_t_2 = 0;
+0469: return minuslogp
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_minuslogp); __pyx_r = __pyx_v_minuslogp; goto __pyx_L0;
0470:
+0471: hess = pyross.utils.hessian_finite_difference(flat_maps, minuslogP, eps, method=fd_method)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_hessian_finite_difference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_flat_maps); __Pyx_GIVEREF(__pyx_v_flat_maps); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_flat_maps); __Pyx_INCREF(__pyx_v_minuslogP); __Pyx_GIVEREF(__pyx_v_minuslogP); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_minuslogP); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_eps); __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_method, __pyx_v_fd_method) < 0) __PYX_ERR(0, 471, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_hess = __pyx_t_2; __pyx_t_2 = 0;
+0472: return hess
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_hess); __pyx_r = __pyx_v_hess; goto __pyx_L0;
0473:
+0474: def FIM(self, param_keys, init_fltr, maps, obs0, fltr, Tf, Nf,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_21FIM(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_20FIM[] = "\n Computes the Fisher Information Matrix (FIM) of the stochastic model.\n Parameters\n ----------\n param_keys: list\n A list of parameters to be inferred.\n init_fltr: boolean array\n True for initial conditions to be inferred.\n Shape = (nClass*M)\n Total number of True = total no. of variables - total no. of observed\n maps: numpy.array\n MAP parameter and initial condition estimate (computed for example with SIR_type.latent_inference).\n obs0: numpy.array\n The observed initial data\n fltr: boolean sequence or array\n True for observed and False for unobserved.\n e.g. if only `Is` is known for SIR with one age group, fltr = [False, False, True]\n Tf: float\n Total time of the trajectory\n Nf: float\n Number of data points along the trajectory\n contactMatrix: callable\n A function that takes time (t) as an argument and returns the contactMatrix\n dx: float, optional\n Step size for numerical differentiation of the process mean and its full covariance matrix with respect\n to the parameters. If not specified, the square root of the machine epsilon for the smallest entry on the\n diagonal of the covariance matrix is chosen. Decreasing the step size too small can result in round-off error.\n tangent: bool, optional\n Set to True to use tangent space inference. Default is false.\n infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)\n Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter\n for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each\n age-dependent parameter individually\n Returns\n -------\n "" FIM: 2d numpy.array\n The Fisher Information Matrix\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_21FIM(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_init_fltr = 0;
PyObject *__pyx_v_maps = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_dx = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_keys,&__pyx_n_s_init_fltr,&__pyx_n_s_maps,&__pyx_n_s_obs0,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_dx,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_20FIM(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_init_fltr, PyObject *__pyx_v_maps, PyObject *__pyx_v_obs0, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_dx, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *__pyx_cur_scope;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_prior_stds = NULL;
PyObject *__pyx_v_flat_maps = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_partial_derivative = 0;
PyObject *__pyx_v__mean = 0;
PyObject *__pyx_v__invcov = 0;
PyObject *__pyx_v_cov = NULL;
PyObject *__pyx_v_invcov = NULL;
Py_ssize_t __pyx_v_dim;
PyObject *__pyx_v_FIM = NULL;
PyObject *__pyx_v_rows = NULL;
PyObject *__pyx_v_cols = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_v_dmu_i = NULL;
PyObject *__pyx_v_dmu_j = NULL;
PyObject *__pyx_v_dcov_i = NULL;
PyObject *__pyx_v_dcov_j = NULL;
PyObject *__pyx_v_t1 = NULL;
PyObject *__pyx_v_t2 = NULL;
PyObject *__pyx_v_i_lower = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_1_FIM(__pyx_ptype_6pyross_9inference___pyx_scope_struct_1_FIM, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 474, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_param_keys = __pyx_v_param_keys;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
__pyx_cur_scope->__pyx_v_init_fltr = __pyx_v_init_fltr;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_init_fltr);
__pyx_cur_scope->__pyx_v_obs0 = __pyx_v_obs0;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs0);
__pyx_cur_scope->__pyx_v_Tf = __pyx_v_Tf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
__pyx_cur_scope->__pyx_v_Nf = __pyx_v_Nf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_cur_scope->__pyx_v_tangent = __pyx_v_tangent;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_tangent);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tangent);
__Pyx_INCREF(__pyx_v_fltr);
__Pyx_INCREF(__pyx_v_dx);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_prior_stds);
__Pyx_XDECREF(__pyx_v_flat_maps);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_partial_derivative);
__Pyx_XDECREF(__pyx_v__mean);
__Pyx_XDECREF(__pyx_v__invcov);
__Pyx_XDECREF(__pyx_v_cov);
__Pyx_XDECREF(__pyx_v_invcov);
__Pyx_XDECREF(__pyx_v_FIM);
__Pyx_XDECREF(__pyx_v_rows);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_dmu_i);
__Pyx_XDECREF(__pyx_v_dmu_j);
__Pyx_XDECREF(__pyx_v_dcov_i);
__Pyx_XDECREF(__pyx_v_dcov_j);
__Pyx_XDECREF(__pyx_v_t1);
__Pyx_XDECREF(__pyx_v_t2);
__Pyx_XDECREF(__pyx_v_i_lower);
__Pyx_XDECREF(__pyx_v_fltr);
__Pyx_XDECREF(__pyx_v_dx);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM {
PyObject_HEAD
PyObject *__pyx_v_Nf;
PyObject *__pyx_v_Tf;
PyObject *__pyx_v__cov;
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_flat_maps_range;
PyObject *__pyx_v_fltr0;
PyObject *__pyx_v_full_fltr;
PyObject *__pyx_v_init_fltr;
PyObject *__pyx_v_is_scale_parameter;
PyObject *__pyx_v_obs0;
Py_ssize_t __pyx_v_param_dim;
PyObject *__pyx_v_param_keys;
PyObject *__pyx_v_scaled_maps;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_tangent;
};
+0475: contactMatrix, dx=None, tangent=False, infer_scale_parameter=False):
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM", 0, 8, 11, 1); __PYX_ERR(0, 474, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM", 0, 8, 11, 2); __PYX_ERR(0, 474, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM", 0, 8, 11, 3); __PYX_ERR(0, 474, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM", 0, 8, 11, 4); __PYX_ERR(0, 474, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM", 0, 8, 11, 5); __PYX_ERR(0, 474, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM", 0, 8, 11, 6); __PYX_ERR(0, 474, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM", 0, 8, 11, 7); __PYX_ERR(0, 474, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dx);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "FIM") < 0)) __PYX_ERR(0, 474, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_keys = values[0];
__pyx_v_init_fltr = values[1];
__pyx_v_maps = values[2];
__pyx_v_obs0 = values[3];
__pyx_v_fltr = values[4];
__pyx_v_Tf = values[5];
__pyx_v_Nf = values[6];
__pyx_v_contactMatrix = values[7];
__pyx_v_dx = values[8];
__pyx_v_tangent = values[9];
__pyx_v_infer_scale_parameter = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("FIM", 0, 8, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 474, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_20FIM(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_param_keys, __pyx_v_init_fltr, __pyx_v_maps, __pyx_v_obs0, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_dx, __pyx_v_tangent, __pyx_v_infer_scale_parameter);
0476: '''
0477: Computes the Fisher Information Matrix (FIM) of the stochastic model.
0478: Parameters
0479: ----------
0480: param_keys: list
0481: A list of parameters to be inferred.
0482: init_fltr: boolean array
0483: True for initial conditions to be inferred.
0484: Shape = (nClass*M)
0485: Total number of True = total no. of variables - total no. of observed
0486: maps: numpy.array
0487: MAP parameter and initial condition estimate (computed for example with SIR_type.latent_inference).
0488: obs0: numpy.array
0489: The observed initial data
0490: fltr: boolean sequence or array
0491: True for observed and False for unobserved.
0492: e.g. if only `Is` is known for SIR with one age group, fltr = [False, False, True]
0493: Tf: float
0494: Total time of the trajectory
0495: Nf: float
0496: Number of data points along the trajectory
0497: contactMatrix: callable
0498: A function that takes time (t) as an argument and returns the contactMatrix
0499: dx: float, optional
0500: Step size for numerical differentiation of the process mean and its full covariance matrix with respect
0501: to the parameters. If not specified, the square root of the machine epsilon for the smallest entry on the
0502: diagonal of the covariance matrix is chosen. Decreasing the step size too small can result in round-off error.
0503: tangent: bool, optional
0504: Set to True to use tangent space inference. Default is false.
0505: infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)
0506: Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter
0507: for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each
0508: age-dependent parameter individually
0509: Returns
0510: -------
0511: FIM: 2d numpy.array
0512: The Fisher Information Matrix
0513: '''
+0514: param_dim = len(param_keys)
__pyx_t_1 = __pyx_cur_scope->__pyx_v_param_keys; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 514, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_cur_scope->__pyx_v_param_dim = __pyx_t_2;
+0515: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_fltr, __pyx_cur_scope->__pyx_v_Nf}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_fltr, __pyx_cur_scope->__pyx_v_Nf}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_fltr); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_Nf); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_1); __pyx_t_1 = 0;
0516:
+0517: fltr0 = fltr[0]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fltr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 517, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_fltr0 = __pyx_t_1; __pyx_t_1 = 0;
0518:
+0519: fltr = fltr[1:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 519, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_1); __pyx_t_1 = 0;
0520:
+0521: bounds = np.zeros((len(maps), 2)) # This does not matter here
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 521, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = PyObject_Length(__pyx_v_maps); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 521, __pyx_L1_error) __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 521, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 521, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_2); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 521, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
+0522: prior_stds = np.zeros((len(maps))) # This does not matter here
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = PyObject_Length(__pyx_v_maps); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 522, __pyx_L1_error) __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 522, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_prior_stds = __pyx_t_1; __pyx_t_1 = 0;
0523:
+0524: flat_maps, _,_, flat_maps_range, is_scale_parameter, scaled_maps \
__pyx_v_flat_maps = __pyx_t_4; __pyx_t_4 = 0; __pyx_v__ = __pyx_t_3; __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_6); __pyx_t_6 = 0; __Pyx_GIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_v_flat_maps_range = __pyx_t_7; __pyx_t_7 = 0; __Pyx_GIVEREF(__pyx_t_8); __pyx_cur_scope->__pyx_v_is_scale_parameter = __pyx_t_8; __pyx_t_8 = 0; __Pyx_GIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_v_scaled_maps = __pyx_t_9; __pyx_t_9 = 0;
+0525: =self._flatten_parameters(maps, prior_stds, bounds, infer_scale_parameter)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_5, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 525, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 524, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_6 = PyList_GET_ITEM(sequence, 2); __pyx_t_7 = PyList_GET_ITEM(sequence, 3); __pyx_t_8 = PyList_GET_ITEM(sequence, 4); __pyx_t_9 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_4,&__pyx_t_3,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 524, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_4,&__pyx_t_3,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 6) < 0) __PYX_ERR(0, 524, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 524, __pyx_L1_error) __pyx_L4_unpacking_done:; }
0526:
+0527: full_fltr = sparse.block_diag(fltr)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sparse); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_v_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_fltr); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_full_fltr = __pyx_t_1; __pyx_t_1 = 0;
0528:
+0529: def partial_derivative(func, var, point, dx):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_1partial_derivative(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_3FIM_1partial_derivative = {"partial_derivative", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_8SIR_type_3FIM_1partial_derivative, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_1partial_derivative(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_func = 0;
PyObject *__pyx_v_var = 0;
PyObject *__pyx_v_point = 0;
PyObject *__pyx_v_dx = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("partial_derivative (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_func,&__pyx_n_s_var,&__pyx_n_s_point,&__pyx_n_s_dx,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_func)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_var)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("partial_derivative", 1, 4, 4, 1); __PYX_ERR(0, 529, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_point)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("partial_derivative", 1, 4, 4, 2); __PYX_ERR(0, 529, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dx)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("partial_derivative", 1, 4, 4, 3); __PYX_ERR(0, 529, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "partial_derivative") < 0)) __PYX_ERR(0, 529, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
}
__pyx_v_func = values[0];
__pyx_v_var = values[1];
__pyx_v_point = values[2];
__pyx_v_dx = values[3];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("partial_derivative", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 529, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM.partial_derivative", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_partial_derivative(__pyx_self, __pyx_v_func, __pyx_v_var, __pyx_v_point, __pyx_v_dx);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3FIM_partial_derivative(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_func, PyObject *__pyx_v_var, PyObject *__pyx_v_point, PyObject *__pyx_v_dx) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_partial_derivative *__pyx_cur_scope;
PyObject *__pyx_v_wraps = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("partial_derivative", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_partial_derivative *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_2_partial_derivative(__pyx_ptype_6pyross_9inference___pyx_scope_struct_2_partial_derivative, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_partial_derivative *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 529, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_func = __pyx_v_func;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_func);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_func);
__pyx_cur_scope->__pyx_v_var = __pyx_v_var;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_var);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_var);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM.partial_derivative", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_wraps);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__11 = PyTuple_Pack(7, __pyx_n_s_func, __pyx_n_s_var, __pyx_n_s_point, __pyx_n_s_dx, __pyx_n_s_args, __pyx_n_s_wraps, __pyx_n_s_wraps); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 529, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__11);
__Pyx_GIVEREF(__pyx_tuple__11);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_3FIM_1partial_derivative, 0, __pyx_n_s_FIM_locals_partial_derivative, NULL, __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__12)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 529, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_partial_derivative = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_partial_derivative, 529, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 529, __pyx_L1_error)
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_partial_derivative {
PyObject_HEAD
PyObject *__pyx_v_args;
PyObject *__pyx_v_func;
PyObject *__pyx_v_var;
};
+0530: args = point[:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_point, 0, 0, NULL, NULL, &__pyx_slice__2, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 530, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_args = __pyx_t_1; __pyx_t_1 = 0;
+0531: def wraps(x):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_18partial_derivative_1wraps(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_3FIM_18partial_derivative_1wraps = {"wraps", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_3FIM_18partial_derivative_1wraps, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_18partial_derivative_1wraps(PyObject *__pyx_self, PyObject *__pyx_v_x) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("wraps (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_18partial_derivative_wraps(__pyx_self, ((PyObject *)__pyx_v_x));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3FIM_18partial_derivative_wraps(PyObject *__pyx_self, PyObject *__pyx_v_x) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_partial_derivative *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_partial_derivative *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("wraps", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_2_partial_derivative *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM.partial_derivative.wraps", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__8 = PyTuple_Pack(1, __pyx_n_s_x); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__8);
__Pyx_GIVEREF(__pyx_tuple__8);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_3FIM_18partial_derivative_1wraps, 0, __pyx_n_s_FIM_locals_partial_derivative_lo, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_wraps = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_wraps, 531, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 531, __pyx_L1_error)
+0532: args[var] = x
if (unlikely(!__pyx_cur_scope->__pyx_v_args)) { __Pyx_RaiseClosureNameError("args"); __PYX_ERR(0, 532, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_var)) { __Pyx_RaiseClosureNameError("var"); __PYX_ERR(0, 532, __pyx_L1_error) }
if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_args, __pyx_cur_scope->__pyx_v_var, __pyx_v_x) < 0)) __PYX_ERR(0, 532, __pyx_L1_error)
+0533: return func(args)
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_func)) { __Pyx_RaiseClosureNameError("func"); __PYX_ERR(0, 533, __pyx_L1_error) } if (unlikely(!__pyx_cur_scope->__pyx_v_args)) { __Pyx_RaiseClosureNameError("args"); __PYX_ERR(0, 533, __pyx_L1_error) } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_func); __pyx_t_2 = __pyx_cur_scope->__pyx_v_func; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_cur_scope->__pyx_v_args) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_args); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0534: return derivative(wraps, point[var], dx=dx)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_derivative); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_point, __pyx_cur_scope->__pyx_v_var); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_wraps); __Pyx_GIVEREF(__pyx_v_wraps); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_wraps); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dx, __pyx_v_dx) < 0) __PYX_ERR(0, 534, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 534, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
0535:
+0536: def _mean(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_3_mean(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_3FIM_3_mean = {"_mean", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_3FIM_3_mean, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_3_mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_2_mean(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3FIM_2_mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *__pyx_outer_scope;
PyObject *__pyx_v_y_unflat = NULL;
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_xm = NULL;
PyObject *__pyx_v_xm_red = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM._mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_y_unflat);
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_xm);
__Pyx_XDECREF(__pyx_v_xm_red);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__13 = PyTuple_Pack(8, __pyx_n_s_y, __pyx_n_s_y_unflat, __pyx_n_s_inits, __pyx_n_s_x0, __pyx_n_s_parameters, __pyx_n_s_model, __pyx_n_s_xm, __pyx_n_s_xm_red); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 536, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__13);
__Pyx_GIVEREF(__pyx_tuple__13);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_3FIM_3_mean, 0, __pyx_n_s_FIM_locals__mean, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 536, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v__mean = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_mean, 536, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 536, __pyx_L1_error)
+0537: y_unflat = self._unflatten_parameters(y, flat_maps_range, is_scale_parameter,
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 537, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_flat_maps_range)) { __Pyx_RaiseClosureNameError("flat_maps_range"); __PYX_ERR(0, 537, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_is_scale_parameter)) { __Pyx_RaiseClosureNameError("is_scale_parameter"); __PYX_ERR(0, 537, __pyx_L1_error) }
+0538: scaled_maps)
if (unlikely(!__pyx_cur_scope->__pyx_v_scaled_maps)) { __Pyx_RaiseClosureNameError("scaled_maps"); __PYX_ERR(0, 538, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_y);
__Pyx_GIVEREF(__pyx_v_y);
PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_y);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_scaled_maps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_scaled_maps);
PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_scaled_maps);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 537, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_y_unflat = __pyx_t_1;
__pyx_t_1 = 0;
+0539: inits = np.copy(y_unflat[param_dim:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_y_unflat, __pyx_cur_scope->__pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 539, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_inits = __pyx_t_1; __pyx_t_1 = 0;
+0540: x0 = self.fill_initial_conditions(inits, obs0, init_fltr, fltr0)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 540, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_initial_conditions); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 540, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_obs0)) { __Pyx_RaiseClosureNameError("obs0"); __PYX_ERR(0, 540, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_init_fltr)) { __Pyx_RaiseClosureNameError("init_fltr"); __PYX_ERR(0, 540, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr0)) { __Pyx_RaiseClosureNameError("fltr0"); __PYX_ERR(0, 540, __pyx_L1_error) }
__pyx_t_2 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_3 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 540, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
}
__Pyx_INCREF(__pyx_v_inits);
__Pyx_GIVEREF(__pyx_v_inits);
PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_inits);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs0);
PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_obs0);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_init_fltr);
PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr0);
PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_fltr0);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 540, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_x0 = __pyx_t_1;
__pyx_t_1 = 0;
+0541: parameters = self.fill_params_dict(param_keys, y_unflat)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 541, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 541, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_param_keys)) { __Pyx_RaiseClosureNameError("param_keys"); __PYX_ERR(0, 541, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 541, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_param_keys);
__Pyx_INCREF(__pyx_v_y_unflat);
__Pyx_GIVEREF(__pyx_v_y_unflat);
PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_v_y_unflat);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 541, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_parameters = __pyx_t_1;
__pyx_t_1 = 0;
+0542: self.set_params(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 542, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 542, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 542, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0543: model = self.make_det_model(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 543, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 543, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 543, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_model = __pyx_t_1;
__pyx_t_1 = 0;
+0544: xm = self.integrate(x0,0,Tf,Nf,model,contactMatrix, method='LSODA')
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 544, __pyx_L1_error) }
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 544, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 544, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_Nf)) { __Pyx_RaiseClosureNameError("Nf"); __PYX_ERR(0, 544, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 544, __pyx_L1_error) }
__pyx_t_5 = PyTuple_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 544, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_x0);
__Pyx_GIVEREF(__pyx_v_x0);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_x0);
__Pyx_INCREF(__pyx_int_0);
__Pyx_GIVEREF(__pyx_int_0);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_0);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_cur_scope->__pyx_v_Tf);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf);
PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_cur_scope->__pyx_v_Nf);
__Pyx_INCREF(__pyx_v_model);
__Pyx_GIVEREF(__pyx_v_model);
PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_model);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 544, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, __pyx_n_u_LSODA) < 0) __PYX_ERR(0, 544, __pyx_L1_error)
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 544, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_xm = __pyx_t_3;
__pyx_t_3 = 0;
+0545: xm = np.ravel(xm[1:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_xm, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_xm, __pyx_t_3); __pyx_t_3 = 0; /* … */ __pyx_slice__10 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__10)) __PYX_ERR(0, 545, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__10); __Pyx_GIVEREF(__pyx_slice__10);
+0546: xm_red = full_fltr@xm
if (unlikely(!__pyx_cur_scope->__pyx_v_full_fltr)) { __Pyx_RaiseClosureNameError("full_fltr"); __PYX_ERR(0, 546, __pyx_L1_error) }
__pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_cur_scope->__pyx_v_full_fltr, __pyx_v_xm); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 546, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_xm_red = __pyx_t_3;
__pyx_t_3 = 0;
+0547: return xm_red
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_xm_red); __pyx_r = __pyx_v_xm_red; goto __pyx_L0;
0548:
+0549: def _cov(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_5_cov(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_3FIM_5_cov = {"_cov", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_3FIM_5_cov, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_5_cov(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_cov (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_4_cov(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3FIM_4_cov(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *__pyx_outer_scope;
PyObject *__pyx_v_y_unflat = NULL;
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
CYTHON_UNUSED PyObject *__pyx_v_xm = NULL;
PyObject *__pyx_v_full_cov = NULL;
PyObject *__pyx_v_cov_red = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_cov", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM._cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_y_unflat);
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_xm);
__Pyx_XDECREF(__pyx_v_full_cov);
__Pyx_XDECREF(__pyx_v_cov_red);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__15 = PyTuple_Pack(9, __pyx_n_s_y, __pyx_n_s_y_unflat, __pyx_n_s_inits, __pyx_n_s_x0, __pyx_n_s_parameters, __pyx_n_s_model, __pyx_n_s_xm, __pyx_n_s_full_cov, __pyx_n_s_cov_red); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 549, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__15);
__Pyx_GIVEREF(__pyx_tuple__15);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_3FIM_5_cov, 0, __pyx_n_s_FIM_locals__cov, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 549, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_cur_scope->__pyx_v__cov = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_cov, 549, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 549, __pyx_L1_error)
+0550: y_unflat = self._unflatten_parameters(y, flat_maps_range, is_scale_parameter,
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 550, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_flat_maps_range)) { __Pyx_RaiseClosureNameError("flat_maps_range"); __PYX_ERR(0, 550, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_is_scale_parameter)) { __Pyx_RaiseClosureNameError("is_scale_parameter"); __PYX_ERR(0, 550, __pyx_L1_error) }
+0551: scaled_maps)
if (unlikely(!__pyx_cur_scope->__pyx_v_scaled_maps)) { __Pyx_RaiseClosureNameError("scaled_maps"); __PYX_ERR(0, 551, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 550, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 550, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 550, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_y);
__Pyx_GIVEREF(__pyx_v_y);
PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_y);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_scaled_maps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_scaled_maps);
PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_scaled_maps);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 550, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_y_unflat = __pyx_t_1;
__pyx_t_1 = 0;
+0552: inits = np.copy(y_unflat[param_dim:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_y_unflat, __pyx_cur_scope->__pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 552, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_inits = __pyx_t_1; __pyx_t_1 = 0;
+0553: x0 = self.fill_initial_conditions(inits, obs0, init_fltr, fltr0)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 553, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_initial_conditions); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 553, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_obs0)) { __Pyx_RaiseClosureNameError("obs0"); __PYX_ERR(0, 553, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_init_fltr)) { __Pyx_RaiseClosureNameError("init_fltr"); __PYX_ERR(0, 553, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr0)) { __Pyx_RaiseClosureNameError("fltr0"); __PYX_ERR(0, 553, __pyx_L1_error) }
__pyx_t_2 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_3 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 553, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
}
__Pyx_INCREF(__pyx_v_inits);
__Pyx_GIVEREF(__pyx_v_inits);
PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_inits);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs0);
PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_obs0);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_init_fltr);
PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr0);
PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_fltr0);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 553, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_x0 = __pyx_t_1;
__pyx_t_1 = 0;
+0554: parameters = self.fill_params_dict(param_keys, y_unflat)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 554, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 554, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_param_keys)) { __Pyx_RaiseClosureNameError("param_keys"); __PYX_ERR(0, 554, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 554, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_param_keys);
__Pyx_INCREF(__pyx_v_y_unflat);
__Pyx_GIVEREF(__pyx_v_y_unflat);
PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_v_y_unflat);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 554, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_parameters = __pyx_t_1;
__pyx_t_1 = 0;
+0555: self.set_params(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 555, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 555, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 555, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0556: model = self.make_det_model(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 556, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 556, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_model = __pyx_t_1;
__pyx_t_1 = 0;
+0557: if tangent:
if (unlikely(!__pyx_cur_scope->__pyx_v_tangent)) { __Pyx_RaiseClosureNameError("tangent"); __PYX_ERR(0, 557, __pyx_L1_error) }
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_tangent); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 557, __pyx_L1_error)
if (__pyx_t_6) {
/* … */
goto __pyx_L3;
}
+0558: xm, full_cov = self.obtain_full_mean_cov_tangent_space(x0, Tf,
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 558, __pyx_L1_error) }
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 558, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 558, __pyx_L1_error) }
__pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_cur_scope->__pyx_v_Tf); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 558, __pyx_L1_error)
/* … */
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov_tangent_space(__pyx_cur_scope->__pyx_v_self, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_v_model, __pyx_t_1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 558, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
PyObject* sequence = __pyx_t_5;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 558, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_1 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_2 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_1 = PyList_GET_ITEM(sequence, 0);
__pyx_t_2 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_2);
#else
__pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 558, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 558, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 558, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_10 = Py_TYPE(__pyx_t_3)->tp_iternext;
index = 0; __pyx_t_1 = __pyx_t_10(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L4_unpacking_failed;
__Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_2 = __pyx_t_10(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed;
__Pyx_GOTREF(__pyx_t_2);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_3), 2) < 0) __PYX_ERR(0, 558, __pyx_L1_error)
__pyx_t_10 = NULL;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L5_unpacking_done;
__pyx_L4_unpacking_failed:;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_10 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 558, __pyx_L1_error)
__pyx_L5_unpacking_done:;
}
__pyx_v_xm = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_v_full_cov = __pyx_t_2;
__pyx_t_2 = 0;
+0559: Nf, model,
if (unlikely(!__pyx_cur_scope->__pyx_v_Nf)) { __Pyx_RaiseClosureNameError("Nf"); __PYX_ERR(0, 559, __pyx_L1_error) }
__pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_cur_scope->__pyx_v_Nf); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 559, __pyx_L1_error)
+0560: contactMatrix)
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 560, __pyx_L1_error) }
__pyx_t_1 = __pyx_cur_scope->__pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_t_1);
0561: else:
+0562: xm, full_cov = self.obtain_full_mean_cov(x0, Tf,
/*else*/ {
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 562, __pyx_L1_error) }
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 562, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 562, __pyx_L1_error) }
__pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_cur_scope->__pyx_v_Tf); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 562, __pyx_L1_error)
/* … */
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov(__pyx_cur_scope->__pyx_v_self, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_v_model, __pyx_t_5, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 562, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 562, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_5 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_5 = PyList_GET_ITEM(sequence, 0);
__pyx_t_1 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_1);
#else
__pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 562, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 562, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 562, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_10 = Py_TYPE(__pyx_t_3)->tp_iternext;
index = 0; __pyx_t_5 = __pyx_t_10(__pyx_t_3); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
index = 1; __pyx_t_1 = __pyx_t_10(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_1);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_3), 2) < 0) __PYX_ERR(0, 562, __pyx_L1_error)
__pyx_t_10 = NULL;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L7_unpacking_done;
__pyx_L6_unpacking_failed:;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_10 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 562, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__pyx_v_xm = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_v_full_cov = __pyx_t_1;
__pyx_t_1 = 0;
}
__pyx_L3:;
+0563: Nf, model,
if (unlikely(!__pyx_cur_scope->__pyx_v_Nf)) { __Pyx_RaiseClosureNameError("Nf"); __PYX_ERR(0, 563, __pyx_L1_error) }
__pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_cur_scope->__pyx_v_Nf); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 563, __pyx_L1_error)
+0564: contactMatrix)
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 564, __pyx_L1_error) }
__pyx_t_5 = __pyx_cur_scope->__pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_t_5);
+0565: cov_red = full_fltr@full_cov@np.transpose(full_fltr)
if (unlikely(!__pyx_cur_scope->__pyx_v_full_fltr)) { __Pyx_RaiseClosureNameError("full_fltr"); __PYX_ERR(0, 565, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_cur_scope->__pyx_v_full_fltr, __pyx_v_full_cov); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_transpose); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_cur_scope->__pyx_v_full_fltr)) { __Pyx_RaiseClosureNameError("full_fltr"); __PYX_ERR(0, 565, __pyx_L1_error) }
__pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
__pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_cur_scope->__pyx_v_full_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 565, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_cov_red = __pyx_t_3;
__pyx_t_3 = 0;
+0566: return cov_red
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_cov_red); __pyx_r = __pyx_v_cov_red; goto __pyx_L0;
0567:
+0568: def _invcov(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_7_invcov(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_3FIM_7_invcov = {"_invcov", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_3FIM_7_invcov, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_3FIM_7_invcov(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_invcov (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_6_invcov(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_3FIM_6_invcov(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *__pyx_outer_scope;
PyObject *__pyx_v_y_unflat = NULL;
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_full_invcov = NULL;
PyObject *__pyx_v_cov = NULL;
PyObject *__pyx_v_invcov_red = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_invcov", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_1_FIM *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM._invcov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_y_unflat);
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_full_invcov);
__Pyx_XDECREF(__pyx_v_cov);
__Pyx_XDECREF(__pyx_v_invcov_red);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__17 = PyTuple_Pack(9, __pyx_n_s_y, __pyx_n_s_y_unflat, __pyx_n_s_inits, __pyx_n_s_x0, __pyx_n_s_parameters, __pyx_n_s_model, __pyx_n_s_full_invcov, __pyx_n_s_cov_2, __pyx_n_s_invcov_red); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 568, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__17);
__Pyx_GIVEREF(__pyx_tuple__17);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_3FIM_7_invcov, 0, __pyx_n_s_FIM_locals__invcov, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 568, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v__invcov = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_invcov, 568, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 568, __pyx_L1_error)
+0569: y_unflat = self._unflatten_parameters(y, flat_maps_range, is_scale_parameter,
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 569, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 569, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_flat_maps_range)) { __Pyx_RaiseClosureNameError("flat_maps_range"); __PYX_ERR(0, 569, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_is_scale_parameter)) { __Pyx_RaiseClosureNameError("is_scale_parameter"); __PYX_ERR(0, 569, __pyx_L1_error) }
+0570: scaled_maps)
if (unlikely(!__pyx_cur_scope->__pyx_v_scaled_maps)) { __Pyx_RaiseClosureNameError("scaled_maps"); __PYX_ERR(0, 570, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 569, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_y);
__Pyx_GIVEREF(__pyx_v_y);
PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_y);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_scaled_maps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_scaled_maps);
PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_scaled_maps);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 569, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_y_unflat = __pyx_t_1;
__pyx_t_1 = 0;
+0571: inits = np.copy(y_unflat[param_dim:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_y_unflat, __pyx_cur_scope->__pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 571, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_inits = __pyx_t_1; __pyx_t_1 = 0;
+0572: x0 = self.fill_initial_conditions(inits, obs0, init_fltr, fltr0)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 572, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_initial_conditions); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_obs0)) { __Pyx_RaiseClosureNameError("obs0"); __PYX_ERR(0, 572, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_init_fltr)) { __Pyx_RaiseClosureNameError("init_fltr"); __PYX_ERR(0, 572, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr0)) { __Pyx_RaiseClosureNameError("fltr0"); __PYX_ERR(0, 572, __pyx_L1_error) }
__pyx_t_2 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_3 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
}
__Pyx_INCREF(__pyx_v_inits);
__Pyx_GIVEREF(__pyx_v_inits);
PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_inits);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs0);
PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_obs0);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_init_fltr);
PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr0);
PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_fltr0);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_x0 = __pyx_t_1;
__pyx_t_1 = 0;
+0573: parameters = self.fill_params_dict(param_keys, y_unflat)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 573, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 573, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_param_keys)) { __Pyx_RaiseClosureNameError("param_keys"); __PYX_ERR(0, 573, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 573, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_param_keys);
__Pyx_INCREF(__pyx_v_y_unflat);
__Pyx_GIVEREF(__pyx_v_y_unflat);
PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_v_y_unflat);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 573, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_parameters = __pyx_t_1;
__pyx_t_1 = 0;
+0574: self.set_params(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 574, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 574, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 574, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0575: model = self.make_det_model(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 575, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 575, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 575, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_model = __pyx_t_1;
__pyx_t_1 = 0;
+0576: if tangent:
if (unlikely(!__pyx_cur_scope->__pyx_v_tangent)) { __Pyx_RaiseClosureNameError("tangent"); __PYX_ERR(0, 576, __pyx_L1_error) }
__pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_tangent); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 576, __pyx_L1_error)
if (__pyx_t_6) {
/* … */
goto __pyx_L3;
}
+0577: full_invcov = self.obtain_full_invcov_tangent_space(x0, Tf,
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 577, __pyx_L1_error) }
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 577, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 577, __pyx_L1_error) }
__pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_cur_scope->__pyx_v_Tf); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 577, __pyx_L1_error)
/* … */
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->obtain_full_invcov_tangent_space(__pyx_cur_scope->__pyx_v_self, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_v_model, __pyx_t_1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 577, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_full_invcov = __pyx_t_5;
__pyx_t_5 = 0;
+0578: Nf, model,
if (unlikely(!__pyx_cur_scope->__pyx_v_Nf)) { __Pyx_RaiseClosureNameError("Nf"); __PYX_ERR(0, 578, __pyx_L1_error) }
__pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_cur_scope->__pyx_v_Nf); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 578, __pyx_L1_error)
+0579: contactMatrix)
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 579, __pyx_L1_error) }
__pyx_t_1 = __pyx_cur_scope->__pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_t_1);
0580: else:
+0581: cov = _cov(y)
/*else*/ {
if (unlikely(!__pyx_cur_scope->__pyx_v__cov)) { __Pyx_RaiseClosureNameError("_cov"); __PYX_ERR(0, 581, __pyx_L1_error) }
__pyx_t_5 = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_4_cov(__pyx_cur_scope->__pyx_v__cov, __pyx_v_y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 581, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_v_cov = __pyx_t_5;
__pyx_t_5 = 0;
+0582: full_invcov = np.linalg.inv(cov)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_linalg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inv); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_v_cov) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_cov); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_full_invcov = __pyx_t_5; __pyx_t_5 = 0; } __pyx_L3:;
0583: #full_invcov = self.obtain_full_invcov(x0, Tf,
0584: # Nf, model,
0585: # contactMatrix) not PD
+0586: invcov_red = full_fltr@full_invcov@np.transpose(full_fltr)
if (unlikely(!__pyx_cur_scope->__pyx_v_full_fltr)) { __Pyx_RaiseClosureNameError("full_fltr"); __PYX_ERR(0, 586, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_cur_scope->__pyx_v_full_fltr, __pyx_v_full_invcov); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_transpose); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_cur_scope->__pyx_v_full_fltr)) { __Pyx_RaiseClosureNameError("full_fltr"); __PYX_ERR(0, 586, __pyx_L1_error) }
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_cur_scope->__pyx_v_full_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_cur_scope->__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 586, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_invcov_red = __pyx_t_3;
__pyx_t_3 = 0;
+0587: return invcov_red
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_invcov_red); __pyx_r = __pyx_v_invcov_red; goto __pyx_L0;
0588:
+0589: cov = _cov(flat_maps)
__pyx_t_1 = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_4_cov(__pyx_cur_scope->__pyx_v__cov, __pyx_v_flat_maps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 589, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_cov = __pyx_t_1; __pyx_t_1 = 0;
+0590: if dx == None:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_dx, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 590, __pyx_L1_error) __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 590, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_12) { /* … */ }
+0591: dx = np.sqrt(np.spacing(np.amin(np.abs(np.diagonal(cov)))))
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_spacing); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_amin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_abs); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_n_s_np); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_n_s_diagonal); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_15))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_15); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_15); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_15, function); } } __pyx_t_10 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_15, __pyx_t_14, __pyx_v_cov) : __Pyx_PyObject_CallOneArg(__pyx_t_15, __pyx_v_cov); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_3 = (__pyx_t_15) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_15, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_10); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_7 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_13, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_8 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_6, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_8); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF_SET(__pyx_v_dx, __pyx_t_1); __pyx_t_1 = 0;
0592:
+0593: invcov = _invcov(flat_maps)
__pyx_t_1 = __pyx_pf_6pyross_9inference_8SIR_type_3FIM_6_invcov(__pyx_v__invcov, __pyx_v_flat_maps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_invcov = __pyx_t_1; __pyx_t_1 = 0;
0594:
+0595: dim = len(flat_maps)
__pyx_t_2 = PyObject_Length(__pyx_v_flat_maps); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 595, __pyx_L1_error) __pyx_v_dim = __pyx_t_2;
+0596: FIM = np.zeros((dim,dim))
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6); __pyx_t_9 = 0; __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_FIM = __pyx_t_1; __pyx_t_1 = 0;
0597:
+0598: rows,cols = np.triu_indices(dim)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 598, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_7 = PyList_GET_ITEM(sequence, 0); __pyx_t_8 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); #else __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_7 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); index = 1; __pyx_t_8 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) __PYX_ERR(0, 598, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 598, __pyx_L1_error) __pyx_L7_unpacking_done:; } __pyx_v_rows = __pyx_t_7; __pyx_t_7 = 0; __pyx_v_cols = __pyx_t_8; __pyx_t_8 = 0;
+0599: for i,j in zip(rows,cols):
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_rows); __Pyx_GIVEREF(__pyx_v_rows); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_rows); __Pyx_INCREF(__pyx_v_cols); __Pyx_GIVEREF(__pyx_v_cols); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_cols); __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) { __pyx_t_1 = __pyx_t_8; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0; __pyx_t_16 = NULL; } else { __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_16 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 599, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; for (;;) { if (likely(!__pyx_t_16)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_8); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 599, __pyx_L1_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_8); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 599, __pyx_L1_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif } } else { __pyx_t_8 = __pyx_t_16(__pyx_t_1); if (unlikely(!__pyx_t_8)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 599, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_8); } if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { PyObject* sequence = __pyx_t_8; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 599, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_7 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { Py_ssize_t index = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_9)->tp_iternext; index = 0; __pyx_t_7 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_7)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); index = 1; __pyx_t_6 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_9), 2) < 0) __PYX_ERR(0, 599, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 599, __pyx_L1_error) __pyx_L11_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_6); __pyx_t_6 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0600: dmu_i = partial_derivative(_mean, var=i, point=flat_maps, dx=dx)
__pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v__mean); __Pyx_GIVEREF(__pyx_v__mean); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v__mean); __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_var, __pyx_v_i) < 0) __PYX_ERR(0, 600, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_point, __pyx_v_flat_maps) < 0) __PYX_ERR(0, 600, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dx, __pyx_v_dx) < 0) __PYX_ERR(0, 600, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_partial_derivative, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_dmu_i, __pyx_t_7); __pyx_t_7 = 0;
+0601: dmu_j = partial_derivative(_mean, var=j, point=flat_maps, dx=dx)
__pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v__mean); __Pyx_GIVEREF(__pyx_v__mean); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v__mean); __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_var, __pyx_v_j) < 0) __PYX_ERR(0, 601, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_point, __pyx_v_flat_maps) < 0) __PYX_ERR(0, 601, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dx, __pyx_v_dx) < 0) __PYX_ERR(0, 601, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_Call(__pyx_v_partial_derivative, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_dmu_j, __pyx_t_8); __pyx_t_8 = 0;
+0602: dcov_i = partial_derivative(_cov, var=i, point=flat_maps, dx=dx)
__pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_cur_scope->__pyx_v__cov); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v__cov); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_cur_scope->__pyx_v__cov); __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_var, __pyx_v_i) < 0) __PYX_ERR(0, 602, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_point, __pyx_v_flat_maps) < 0) __PYX_ERR(0, 602, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dx, __pyx_v_dx) < 0) __PYX_ERR(0, 602, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_v_partial_derivative, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_dcov_i, __pyx_t_7); __pyx_t_7 = 0;
+0603: dcov_j = partial_derivative(_cov, var=j, point=flat_maps, dx=dx)
__pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_cur_scope->__pyx_v__cov); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v__cov); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_cur_scope->__pyx_v__cov); __pyx_t_6 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_var, __pyx_v_j) < 0) __PYX_ERR(0, 603, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_point, __pyx_v_flat_maps) < 0) __PYX_ERR(0, 603, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dx, __pyx_v_dx) < 0) __PYX_ERR(0, 603, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_Call(__pyx_v_partial_derivative, __pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_dcov_j, __pyx_t_8); __pyx_t_8 = 0;
+0604: t1 = dmu_i@cov@dmu_j
__pyx_t_8 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_dmu_i, __pyx_v_cov); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_8, __pyx_v_dmu_j); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_XDECREF_SET(__pyx_v_t1, __pyx_t_6); __pyx_t_6 = 0;
+0605: t2 = np.multiply(0.5,np.trace(invcov@dcov_i@invcov@dcov_j))
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_multiply); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_trace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_invcov, __pyx_v_dcov_i); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_9, __pyx_v_invcov); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_3, __pyx_v_dcov_j); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_8 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_9); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_float_0_5, __pyx_t_8}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_float_0_5, __pyx_t_8}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_float_0_5); __Pyx_GIVEREF(__pyx_float_0_5); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_float_0_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_t2, __pyx_t_6); __pyx_t_6 = 0;
+0606: FIM[i,j] = t1 + t2
__pyx_t_6 = PyNumber_Add(__pyx_v_t1, __pyx_v_t2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_j); if (unlikely(PyObject_SetItem(__pyx_v_FIM, __pyx_t_7, __pyx_t_6) < 0)) __PYX_ERR(0, 606, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+0607: i_lower = np.tril_indices(dim,-1)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_tril_indices); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_6, __pyx_int_neg_1}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_6, __pyx_int_neg_1}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_5, __pyx_int_neg_1); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 607, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_i_lower = __pyx_t_1; __pyx_t_1 = 0;
+0608: FIM[i_lower] = FIM.T[i_lower]
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_FIM, __pyx_n_s_T); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_v_i_lower); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 608, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(PyObject_SetItem(__pyx_v_FIM, __pyx_v_i_lower, __pyx_t_7) < 0)) __PYX_ERR(0, 608, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0609: return FIM
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_FIM); __pyx_r = __pyx_v_FIM; goto __pyx_L0;
0610:
+0611: def FIM_det(self, param_keys, init_fltr, maps, obs0, fltr, Tf, Nf,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_23FIM_det(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_22FIM_det[] = "\n Computes the Fisher Information Matrix (FIM) of the deterministic model.\n Parameters\n ----------\n param_keys: list\n A list of parameters to be inferred.\n init_fltr: boolean array\n True for initial conditions to be inferred.\n Shape = (nClass*M)\n Total number of True = total no. of variables - total no. of observed\n maps: numpy.array\n MAP parameter and initial condition estimate (computed for example with SIR_type.latent_inference).\n obs0: numpy.array\n The observed initial data\n fltr: boolean sequence or array\n True for observed and False for unobserved.\n e.g. if only `Is` is known for SIR with one age group, fltr = [False, False, True]\n Tf: float\n Total time of the trajectory\n Nf: float\n Number of data points along the trajectory\n contactMatrix: callable\n A function that takes time (t) as an argument and returns the contactMatrix\n measurement_error: float, optional\n Standard deviation of measurements (uniform and independent Gaussian measurement error assumed). Default is 1e-2.\n dx: float, optional\n Step size for numerical differentiation of the process mean and its full covariance matrix with respect\n to the parameters. If not specified, the square root of the machine epsilon for the smallest entry on the\n diagonal of the covariance matrix is chosen. Decreasing the step size too small can result in round-off error.\n infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)\n Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter\n for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each\n age-depende""nt parameter individually\n Returns\n -------\n FIM_det: 2d numpy.array\n The Fisher Information Matrix\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_23FIM_det(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_init_fltr = 0;
PyObject *__pyx_v_maps = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_measurement_error = 0;
PyObject *__pyx_v_dx = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM_det (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_keys,&__pyx_n_s_init_fltr,&__pyx_n_s_maps,&__pyx_n_s_obs0,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_measurement_error,&__pyx_n_s_dx,&__pyx_n_s_infer_scale_parameter,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
values[8] = ((PyObject *)__pyx_float_1eneg_2);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_22FIM_det(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_init_fltr, PyObject *__pyx_v_maps, PyObject *__pyx_v_obs0, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_measurement_error, PyObject *__pyx_v_dx, PyObject *__pyx_v_infer_scale_parameter) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_FIM_det *__pyx_cur_scope;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_prior_stds = NULL;
PyObject *__pyx_v_flat_maps = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_partial_derivative = 0;
PyObject *__pyx_v__mean = 0;
PyObject *__pyx_v_sigma_sq = NULL;
PyObject *__pyx_v_cov_diag = NULL;
PyObject *__pyx_v_cov = NULL;
PyObject *__pyx_v_cov_red = NULL;
Py_ssize_t __pyx_v_dim;
PyObject *__pyx_v_FIM_det = NULL;
PyObject *__pyx_v_rows = NULL;
PyObject *__pyx_v_cols = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_v_dmu_i = NULL;
PyObject *__pyx_v_dmu_j = NULL;
PyObject *__pyx_v_i_lower = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM_det", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_FIM_det *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_3_FIM_det(__pyx_ptype_6pyross_9inference___pyx_scope_struct_3_FIM_det, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_FIM_det *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 611, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_param_keys = __pyx_v_param_keys;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
__pyx_cur_scope->__pyx_v_init_fltr = __pyx_v_init_fltr;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_init_fltr);
__pyx_cur_scope->__pyx_v_obs0 = __pyx_v_obs0;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs0);
__pyx_cur_scope->__pyx_v_Tf = __pyx_v_Tf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
__pyx_cur_scope->__pyx_v_Nf = __pyx_v_Nf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_INCREF(__pyx_v_fltr);
__Pyx_INCREF(__pyx_v_dx);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM_det", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_prior_stds);
__Pyx_XDECREF(__pyx_v_flat_maps);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_partial_derivative);
__Pyx_XDECREF(__pyx_v__mean);
__Pyx_XDECREF(__pyx_v_sigma_sq);
__Pyx_XDECREF(__pyx_v_cov_diag);
__Pyx_XDECREF(__pyx_v_cov);
__Pyx_XDECREF(__pyx_v_cov_red);
__Pyx_XDECREF(__pyx_v_FIM_det);
__Pyx_XDECREF(__pyx_v_rows);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_dmu_i);
__Pyx_XDECREF(__pyx_v_dmu_j);
__Pyx_XDECREF(__pyx_v_i_lower);
__Pyx_XDECREF(__pyx_v_fltr);
__Pyx_XDECREF(__pyx_v_dx);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_FIM_det {
PyObject_HEAD
PyObject *__pyx_v_Nf;
PyObject *__pyx_v_Tf;
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_flat_maps_range;
PyObject *__pyx_v_fltr0;
PyObject *__pyx_v_full_fltr;
PyObject *__pyx_v_init_fltr;
PyObject *__pyx_v_is_scale_parameter;
PyObject *__pyx_v_obs0;
Py_ssize_t __pyx_v_param_dim;
PyObject *__pyx_v_param_keys;
PyObject *__pyx_v_scaled_maps;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
};
+0612: contactMatrix, measurement_error=1e-2, dx=None,
values[9] = ((PyObject *)Py_None);
+0613: infer_scale_parameter=False):
values[10] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 8, 11, 1); __PYX_ERR(0, 611, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 8, 11, 2); __PYX_ERR(0, 611, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 8, 11, 3); __PYX_ERR(0, 611, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 8, 11, 4); __PYX_ERR(0, 611, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 8, 11, 5); __PYX_ERR(0, 611, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 8, 11, 6); __PYX_ERR(0, 611, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 8, 11, 7); __PYX_ERR(0, 611, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_measurement_error);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dx);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[10] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "FIM_det") < 0)) __PYX_ERR(0, 611, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_keys = values[0];
__pyx_v_init_fltr = values[1];
__pyx_v_maps = values[2];
__pyx_v_obs0 = values[3];
__pyx_v_fltr = values[4];
__pyx_v_Tf = values[5];
__pyx_v_Nf = values[6];
__pyx_v_contactMatrix = values[7];
__pyx_v_measurement_error = values[8];
__pyx_v_dx = values[9];
__pyx_v_infer_scale_parameter = values[10];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("FIM_det", 0, 8, 11, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 611, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM_det", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_22FIM_det(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_param_keys, __pyx_v_init_fltr, __pyx_v_maps, __pyx_v_obs0, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_measurement_error, __pyx_v_dx, __pyx_v_infer_scale_parameter);
0614: '''
0615: Computes the Fisher Information Matrix (FIM) of the deterministic model.
0616: Parameters
0617: ----------
0618: param_keys: list
0619: A list of parameters to be inferred.
0620: init_fltr: boolean array
0621: True for initial conditions to be inferred.
0622: Shape = (nClass*M)
0623: Total number of True = total no. of variables - total no. of observed
0624: maps: numpy.array
0625: MAP parameter and initial condition estimate (computed for example with SIR_type.latent_inference).
0626: obs0: numpy.array
0627: The observed initial data
0628: fltr: boolean sequence or array
0629: True for observed and False for unobserved.
0630: e.g. if only `Is` is known for SIR with one age group, fltr = [False, False, True]
0631: Tf: float
0632: Total time of the trajectory
0633: Nf: float
0634: Number of data points along the trajectory
0635: contactMatrix: callable
0636: A function that takes time (t) as an argument and returns the contactMatrix
0637: measurement_error: float, optional
0638: Standard deviation of measurements (uniform and independent Gaussian measurement error assumed). Default is 1e-2.
0639: dx: float, optional
0640: Step size for numerical differentiation of the process mean and its full covariance matrix with respect
0641: to the parameters. If not specified, the square root of the machine epsilon for the smallest entry on the
0642: diagonal of the covariance matrix is chosen. Decreasing the step size too small can result in round-off error.
0643: infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)
0644: Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter
0645: for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each
0646: age-dependent parameter individually
0647: Returns
0648: -------
0649: FIM_det: 2d numpy.array
0650: The Fisher Information Matrix
0651: '''
+0652: param_dim = len(param_keys)
__pyx_t_1 = __pyx_cur_scope->__pyx_v_param_keys; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 652, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_cur_scope->__pyx_v_param_dim = __pyx_t_2;
+0653: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_fltr, __pyx_cur_scope->__pyx_v_Nf}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_fltr, __pyx_cur_scope->__pyx_v_Nf}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_fltr); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_Nf); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 653, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_1); __pyx_t_1 = 0;
0654:
+0655: fltr0 = fltr[0]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_fltr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 655, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_fltr0 = __pyx_t_1; __pyx_t_1 = 0;
0656:
+0657: fltr = fltr[1:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 657, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_1); __pyx_t_1 = 0;
0658:
+0659: bounds = np.zeros((len(maps), 2)) # This does not matter here
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = PyObject_Length(__pyx_v_maps); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 659, __pyx_L1_error) __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_2); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
+0660: prior_stds = np.zeros((len(maps))) # This does not matter here
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = PyObject_Length(__pyx_v_maps); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 660, __pyx_L1_error) __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_prior_stds = __pyx_t_1; __pyx_t_1 = 0;
0661:
+0662: flat_maps, _,_, flat_maps_range, is_scale_parameter, scaled_maps \
__pyx_v_flat_maps = __pyx_t_4; __pyx_t_4 = 0; __pyx_v__ = __pyx_t_3; __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_6); __pyx_t_6 = 0; __Pyx_GIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_v_flat_maps_range = __pyx_t_7; __pyx_t_7 = 0; __Pyx_GIVEREF(__pyx_t_8); __pyx_cur_scope->__pyx_v_is_scale_parameter = __pyx_t_8; __pyx_t_8 = 0; __Pyx_GIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_v_scaled_maps = __pyx_t_9; __pyx_t_9 = 0;
+0663: =self._flatten_parameters(maps, prior_stds, bounds, infer_scale_parameter)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_5, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 662, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_6 = PyList_GET_ITEM(sequence, 2); __pyx_t_7 = PyList_GET_ITEM(sequence, 3); __pyx_t_8 = PyList_GET_ITEM(sequence, 4); __pyx_t_9 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_4,&__pyx_t_3,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_4,&__pyx_t_3,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 6) < 0) __PYX_ERR(0, 662, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 662, __pyx_L1_error) __pyx_L4_unpacking_done:; }
0664:
+0665: full_fltr = sparse.block_diag(fltr)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sparse); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_v_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_fltr); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_full_fltr = __pyx_t_1; __pyx_t_1 = 0;
0666:
+0667: def partial_derivative(func, var, point, dx):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_1partial_derivative(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_7FIM_det_1partial_derivative = {"partial_derivative", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_1partial_derivative, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_1partial_derivative(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_func = 0;
PyObject *__pyx_v_var = 0;
PyObject *__pyx_v_point = 0;
PyObject *__pyx_v_dx = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("partial_derivative (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_func,&__pyx_n_s_var,&__pyx_n_s_point,&__pyx_n_s_dx,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_func)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_var)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("partial_derivative", 1, 4, 4, 1); __PYX_ERR(0, 667, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_point)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("partial_derivative", 1, 4, 4, 2); __PYX_ERR(0, 667, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dx)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("partial_derivative", 1, 4, 4, 3); __PYX_ERR(0, 667, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "partial_derivative") < 0)) __PYX_ERR(0, 667, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
}
__pyx_v_func = values[0];
__pyx_v_var = values[1];
__pyx_v_point = values[2];
__pyx_v_dx = values[3];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("partial_derivative", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 667, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM_det.partial_derivative", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_7FIM_det_partial_derivative(__pyx_self, __pyx_v_func, __pyx_v_var, __pyx_v_point, __pyx_v_dx);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_7FIM_det_partial_derivative(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_func, PyObject *__pyx_v_var, PyObject *__pyx_v_point, PyObject *__pyx_v_dx) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_partial_derivative *__pyx_cur_scope;
PyObject *__pyx_v_wraps = 0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("partial_derivative", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_partial_derivative *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_4_partial_derivative(__pyx_ptype_6pyross_9inference___pyx_scope_struct_4_partial_derivative, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_partial_derivative *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 667, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_func = __pyx_v_func;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_func);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_func);
__pyx_cur_scope->__pyx_v_var = __pyx_v_var;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_var);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_var);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM_det.partial_derivative", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_wraps);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__21 = PyTuple_Pack(7, __pyx_n_s_func, __pyx_n_s_var, __pyx_n_s_point, __pyx_n_s_dx, __pyx_n_s_args, __pyx_n_s_wraps, __pyx_n_s_wraps); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 667, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__21);
__Pyx_GIVEREF(__pyx_tuple__21);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_7FIM_det_1partial_derivative, 0, __pyx_n_s_FIM_det_locals_partial_derivativ_2, NULL, __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 667, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_partial_derivative = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_partial_derivative, 667, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 667, __pyx_L1_error)
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_partial_derivative {
PyObject_HEAD
PyObject *__pyx_v_args;
PyObject *__pyx_v_func;
PyObject *__pyx_v_var;
};
+0668: args = point[:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_point, 0, 0, NULL, NULL, &__pyx_slice__2, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 668, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_args = __pyx_t_1; __pyx_t_1 = 0;
+0669: def wraps(x):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_18partial_derivative_1wraps(PyObject *__pyx_self, PyObject *__pyx_v_x); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_7FIM_det_18partial_derivative_1wraps = {"wraps", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_18partial_derivative_1wraps, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_18partial_derivative_1wraps(PyObject *__pyx_self, PyObject *__pyx_v_x) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("wraps (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_7FIM_det_18partial_derivative_wraps(__pyx_self, ((PyObject *)__pyx_v_x));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_7FIM_det_18partial_derivative_wraps(PyObject *__pyx_self, PyObject *__pyx_v_x) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_partial_derivative *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_partial_derivative *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("wraps", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_4_partial_derivative *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM_det.partial_derivative.wraps", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__19 = PyTuple_Pack(1, __pyx_n_s_x); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 669, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__19);
__Pyx_GIVEREF(__pyx_tuple__19);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_7FIM_det_18partial_derivative_1wraps, 0, __pyx_n_s_FIM_det_locals_partial_derivativ, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 669, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_wraps = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_wraps, 669, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 669, __pyx_L1_error)
+0670: args[var] = x
if (unlikely(!__pyx_cur_scope->__pyx_v_args)) { __Pyx_RaiseClosureNameError("args"); __PYX_ERR(0, 670, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_var)) { __Pyx_RaiseClosureNameError("var"); __PYX_ERR(0, 670, __pyx_L1_error) }
if (unlikely(PyObject_SetItem(__pyx_cur_scope->__pyx_v_args, __pyx_cur_scope->__pyx_v_var, __pyx_v_x) < 0)) __PYX_ERR(0, 670, __pyx_L1_error)
+0671: return func(args)
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_func)) { __Pyx_RaiseClosureNameError("func"); __PYX_ERR(0, 671, __pyx_L1_error) } if (unlikely(!__pyx_cur_scope->__pyx_v_args)) { __Pyx_RaiseClosureNameError("args"); __PYX_ERR(0, 671, __pyx_L1_error) } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_func); __pyx_t_2 = __pyx_cur_scope->__pyx_v_func; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_cur_scope->__pyx_v_args) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_cur_scope->__pyx_v_args); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
+0672: return derivative(wraps, point[var], dx=dx)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_derivative); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_point, __pyx_cur_scope->__pyx_v_var); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_wraps); __Pyx_GIVEREF(__pyx_v_wraps); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_wraps); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dx, __pyx_v_dx) < 0) __PYX_ERR(0, 672, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
0673:
+0674: def _mean(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_3_mean(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_7FIM_det_3_mean = {"_mean", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_3_mean, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_7FIM_det_3_mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_7FIM_det_2_mean(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_7FIM_det_2_mean(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_FIM_det *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_FIM_det *__pyx_outer_scope;
PyObject *__pyx_v_y_unflat = NULL;
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_xm = NULL;
PyObject *__pyx_v_xm_red = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_mean", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_3_FIM_det *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR_type.FIM_det._mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_y_unflat);
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_xm);
__Pyx_XDECREF(__pyx_v_xm_red);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__23 = PyTuple_Pack(8, __pyx_n_s_y, __pyx_n_s_y_unflat, __pyx_n_s_inits, __pyx_n_s_x0, __pyx_n_s_parameters, __pyx_n_s_model, __pyx_n_s_xm, __pyx_n_s_xm_red); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 674, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__23);
__Pyx_GIVEREF(__pyx_tuple__23);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_7FIM_det_3_mean, 0, __pyx_n_s_FIM_det_locals__mean, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 674, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v__mean = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_mean, 674, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 674, __pyx_L1_error)
+0675: y_unflat = self._unflatten_parameters(y, flat_maps_range, is_scale_parameter,
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 675, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 675, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_flat_maps_range)) { __Pyx_RaiseClosureNameError("flat_maps_range"); __PYX_ERR(0, 675, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_is_scale_parameter)) { __Pyx_RaiseClosureNameError("is_scale_parameter"); __PYX_ERR(0, 675, __pyx_L1_error) }
+0676: scaled_maps)
if (unlikely(!__pyx_cur_scope->__pyx_v_scaled_maps)) { __Pyx_RaiseClosureNameError("scaled_maps"); __PYX_ERR(0, 676, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 675, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 675, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 675, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_y);
__Pyx_GIVEREF(__pyx_v_y);
PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_y);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_scaled_maps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_scaled_maps);
PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_scaled_maps);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 675, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_y_unflat = __pyx_t_1;
__pyx_t_1 = 0;
+0677: inits = np.copy(y_unflat[param_dim:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_y_unflat, __pyx_cur_scope->__pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_inits = __pyx_t_1; __pyx_t_1 = 0;
+0678: x0 = self.fill_initial_conditions(inits, obs0, init_fltr, fltr0)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 678, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_initial_conditions); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 678, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_obs0)) { __Pyx_RaiseClosureNameError("obs0"); __PYX_ERR(0, 678, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_init_fltr)) { __Pyx_RaiseClosureNameError("init_fltr"); __PYX_ERR(0, 678, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr0)) { __Pyx_RaiseClosureNameError("fltr0"); __PYX_ERR(0, 678, __pyx_L1_error) }
__pyx_t_2 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_3 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 678, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
}
__Pyx_INCREF(__pyx_v_inits);
__Pyx_GIVEREF(__pyx_v_inits);
PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_inits);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs0);
PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_obs0);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_init_fltr);
PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr0);
PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_fltr0);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 678, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_x0 = __pyx_t_1;
__pyx_t_1 = 0;
+0679: parameters = self.fill_params_dict(param_keys, y_unflat)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 679, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 679, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_param_keys)) { __Pyx_RaiseClosureNameError("param_keys"); __PYX_ERR(0, 679, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 679, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_param_keys);
__Pyx_INCREF(__pyx_v_y_unflat);
__Pyx_GIVEREF(__pyx_v_y_unflat);
PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_v_y_unflat);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 679, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_parameters = __pyx_t_1;
__pyx_t_1 = 0;
+0680: self.set_params(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 680, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 680, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 680, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0681: model = self.make_det_model(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 681, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 681, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 681, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_model = __pyx_t_1;
__pyx_t_1 = 0;
+0682: xm = self.integrate(x0,0,Tf,Nf,model,contactMatrix, method='LSODA')
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 682, __pyx_L1_error) }
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 682, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_Nf)) { __Pyx_RaiseClosureNameError("Nf"); __PYX_ERR(0, 682, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 682, __pyx_L1_error) }
__pyx_t_5 = PyTuple_New(6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_x0);
__Pyx_GIVEREF(__pyx_v_x0);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_x0);
__Pyx_INCREF(__pyx_int_0);
__Pyx_GIVEREF(__pyx_int_0);
PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_0);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_cur_scope->__pyx_v_Tf);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf);
PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_cur_scope->__pyx_v_Nf);
__Pyx_INCREF(__pyx_v_model);
__Pyx_GIVEREF(__pyx_v_model);
PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_model);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, __pyx_n_u_LSODA) < 0) __PYX_ERR(0, 682, __pyx_L1_error)
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 682, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_xm = __pyx_t_3;
__pyx_t_3 = 0;
+0683: xm = np.ravel(xm[1:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ravel); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_xm, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_xm, __pyx_t_3); __pyx_t_3 = 0;
+0684: xm_red = full_fltr@xm
if (unlikely(!__pyx_cur_scope->__pyx_v_full_fltr)) { __Pyx_RaiseClosureNameError("full_fltr"); __PYX_ERR(0, 684, __pyx_L1_error) }
__pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_cur_scope->__pyx_v_full_fltr, __pyx_v_xm); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 684, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_xm_red = __pyx_t_3;
__pyx_t_3 = 0;
+0685: return xm_red
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_xm_red); __pyx_r = __pyx_v_xm_red; goto __pyx_L0;
0686:
+0687: sigma_sq = measurement_error*measurement_error
__pyx_t_1 = PyNumber_Multiply(__pyx_v_measurement_error, __pyx_v_measurement_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_sigma_sq = __pyx_t_1; __pyx_t_1 = 0;
+0688: cov_diag = np.repeat(sigma_sq, repeats=(int(self.dim)*(Nf-1)))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_repeat); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_sigma_sq); __Pyx_GIVEREF(__pyx_v_sigma_sq); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_sigma_sq); __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_cur_scope->__pyx_v_Nf, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = PyNumber_Multiply(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_repeats, __pyx_t_3) < 0) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_v_cov_diag = __pyx_t_3; __pyx_t_3 = 0;
+0689: cov = np.diag(cov_diag)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_diag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_9, __pyx_v_cov_diag) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_cov_diag); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov = __pyx_t_3; __pyx_t_3 = 0;
+0690: cov_red = full_fltr@cov@np.transpose(full_fltr)
__pyx_t_3 = __Pyx_PyNumber_MatrixMultiply(__pyx_cur_scope->__pyx_v_full_fltr, __pyx_v_cov); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_transpose); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_cur_scope->__pyx_v_full_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_cur_scope->__pyx_v_full_fltr); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 690, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov_red = __pyx_t_8; __pyx_t_8 = 0;
0691:
+0692: if dx == None:
__pyx_t_8 = PyObject_RichCompare(__pyx_v_dx, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 692, __pyx_L1_error) __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(0, 692, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (__pyx_t_12) { /* … */ }
+0693: dx = np.sqrt(np.spacing(np.amin(np.abs(_mean(flat_maps)))))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_spacing); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_amin); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_abs); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __pyx_pf_6pyross_9inference_8SIR_type_7FIM_det_2_mean(__pyx_v__mean, __pyx_v_flat_maps); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_13))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_13); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_13, function); } } __pyx_t_6 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_13, __pyx_t_14, __pyx_t_10) : __Pyx_PyObject_CallOneArg(__pyx_t_13, __pyx_t_10); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_9 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_13, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_9); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_8 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_7, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 693, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_dx, __pyx_t_8); __pyx_t_8 = 0;
0694:
+0695: dim = len(flat_maps)
__pyx_t_2 = PyObject_Length(__pyx_v_flat_maps); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 695, __pyx_L1_error) __pyx_v_dim = __pyx_t_2;
+0696: FIM_det = np.zeros((dim,dim))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_7); __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_8 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 696, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_FIM_det = __pyx_t_8; __pyx_t_8 = 0;
0697:
+0698: rows,cols = np.triu_indices(dim)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_8 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_7, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_1); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_8))) || (PyList_CheckExact(__pyx_t_8))) { PyObject* sequence = __pyx_t_8; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 698, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_1 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_1); #else __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_9 = __pyx_t_11(__pyx_t_7); if (unlikely(!__pyx_t_9)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); index = 1; __pyx_t_1 = __pyx_t_11(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_7), 2) < 0) __PYX_ERR(0, 698, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 698, __pyx_L1_error) __pyx_L7_unpacking_done:; } __pyx_v_rows = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_cols = __pyx_t_1; __pyx_t_1 = 0;
+0699: for i,j in zip(rows,cols):
__pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_rows); __Pyx_GIVEREF(__pyx_v_rows); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_rows); __Pyx_INCREF(__pyx_v_cols); __Pyx_GIVEREF(__pyx_v_cols); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_cols); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_8 = __pyx_t_1; __Pyx_INCREF(__pyx_t_8); __pyx_t_2 = 0; __pyx_t_15 = NULL; } else { __pyx_t_2 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_15 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 699, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_15)) { if (likely(PyList_CheckExact(__pyx_t_8))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 699, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_8)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 699, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_8, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_15(__pyx_t_8); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 699, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 699, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 699, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_9 = __pyx_t_11(__pyx_t_3); if (unlikely(!__pyx_t_9)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); index = 1; __pyx_t_7 = __pyx_t_11(__pyx_t_3); if (unlikely(!__pyx_t_7)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_3), 2) < 0) __PYX_ERR(0, 699, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 699, __pyx_L1_error) __pyx_L11_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_7); __pyx_t_7 = 0; /* … */ } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+0700: dmu_i = partial_derivative(_mean, var=i, point=flat_maps, dx=dx)
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v__mean); __Pyx_GIVEREF(__pyx_v__mean); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v__mean); __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_var, __pyx_v_i) < 0) __PYX_ERR(0, 700, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_point, __pyx_v_flat_maps) < 0) __PYX_ERR(0, 700, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dx, __pyx_v_dx) < 0) __PYX_ERR(0, 700, __pyx_L1_error) __pyx_t_9 = __Pyx_PyObject_Call(__pyx_v_partial_derivative, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_dmu_i, __pyx_t_9); __pyx_t_9 = 0;
+0701: dmu_j = partial_derivative(_mean, var=j, point=flat_maps, dx=dx)
__pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v__mean); __Pyx_GIVEREF(__pyx_v__mean); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v__mean); __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_var, __pyx_v_j) < 0) __PYX_ERR(0, 701, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_point, __pyx_v_flat_maps) < 0) __PYX_ERR(0, 701, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dx, __pyx_v_dx) < 0) __PYX_ERR(0, 701, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_partial_derivative, __pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 701, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_dmu_j, __pyx_t_1); __pyx_t_1 = 0;
+0702: FIM_det[i,j] = dmu_i@cov_red@dmu_j
__pyx_t_1 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_dmu_i, __pyx_v_cov_red); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_v_dmu_j); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_i); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_j); if (unlikely(PyObject_SetItem(__pyx_v_FIM_det, __pyx_t_1, __pyx_t_7) < 0)) __PYX_ERR(0, 702, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+0703: i_lower = np.tril_indices(dim,-1)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_tril_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_7, __pyx_int_neg_1}; __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_7, __pyx_int_neg_1}; __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_int_neg_1); __Pyx_GIVEREF(__pyx_int_neg_1); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_int_neg_1); __pyx_t_7 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_i_lower = __pyx_t_8; __pyx_t_8 = 0;
+0704: FIM_det[i_lower] = FIM_det.T[i_lower]
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_FIM_det, __pyx_n_s_T); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_t_8, __pyx_v_i_lower); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(PyObject_SetItem(__pyx_v_FIM_det, __pyx_v_i_lower, __pyx_t_1) < 0)) __PYX_ERR(0, 704, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0705: return FIM_det
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_FIM_det); __pyx_r = __pyx_v_FIM_det; goto __pyx_L0;
0706:
+0707: def error_bars(self, keys, maps, prior_mean, prior_stds, x, Tf, Nf, contactMatrix, eps=1.e-3,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_25error_bars(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_25error_bars(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_maps = 0;
PyObject *__pyx_v_prior_mean = 0;
PyObject *__pyx_v_prior_stds = 0;
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("error_bars (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keys,&__pyx_n_s_maps,&__pyx_n_s_prior_mean,&__pyx_n_s_prior_stds,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_eps,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_fd_method,0};
PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
values[8] = ((PyObject *)__pyx_float_1_eneg_3);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_24error_bars(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_keys, PyObject *__pyx_v_maps, PyObject *__pyx_v_prior_mean, PyObject *__pyx_v_prior_stds, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_eps, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_fd_method) {
PyObject *__pyx_v_hessian = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("error_bars", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.error_bars", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_hessian);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0708: tangent=False, infer_scale_parameter=False, fd_method="central"):
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)__pyx_n_u_central);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars", 0, 8, 12, 1); __PYX_ERR(0, 707, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_mean)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars", 0, 8, 12, 2); __PYX_ERR(0, 707, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars", 0, 8, 12, 3); __PYX_ERR(0, 707, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars", 0, 8, 12, 4); __PYX_ERR(0, 707, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars", 0, 8, 12, 5); __PYX_ERR(0, 707, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars", 0, 8, 12, 6); __PYX_ERR(0, 707, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars", 0, 8, 12, 7); __PYX_ERR(0, 707, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[11] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "error_bars") < 0)) __PYX_ERR(0, 707, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_keys = values[0];
__pyx_v_maps = values[1];
__pyx_v_prior_mean = values[2];
__pyx_v_prior_stds = values[3];
__pyx_v_x = values[4];
__pyx_v_Tf = values[5];
__pyx_v_Nf = values[6];
__pyx_v_contactMatrix = values[7];
__pyx_v_eps = values[8];
__pyx_v_tangent = values[9];
__pyx_v_infer_scale_parameter = values[10];
__pyx_v_fd_method = values[11];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("error_bars", 0, 8, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 707, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.error_bars", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_24error_bars(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_keys, __pyx_v_maps, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_eps, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_fd_method);
+0709: hessian = self.compute_hessian(keys, maps, prior_mean, prior_stds, x,Tf,Nf,contactMatrix,eps,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_compute_hessian); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_2 = PyTuple_New(11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_keys); __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_mean); __Pyx_GIVEREF(__pyx_v_prior_mean); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_prior_mean); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_x); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_Nf); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_2, 7, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_v_eps); __Pyx_INCREF(__pyx_v_tangent); __Pyx_GIVEREF(__pyx_v_tangent); PyTuple_SET_ITEM(__pyx_t_2, 9, __pyx_v_tangent); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_2, 10, __pyx_v_infer_scale_parameter); /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 709, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_hessian = __pyx_t_4; __pyx_t_4 = 0;
+0710: tangent, infer_scale_parameter, fd_method=fd_method)
__pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fd_method, __pyx_v_fd_method) < 0) __PYX_ERR(0, 710, __pyx_L1_error)
+0711: return np.sqrt(np.diagonal(np.linalg.inv(hessian)))
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_diagonal); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_linalg); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_inv); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_v_hessian) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_hessian); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 711, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
0712:
+0713: def log_G_evidence(self, keys, maps, prior_mean, prior_stds, x, Tf, Nf, contactMatrix, eps=1.e-3,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_27log_G_evidence(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_26log_G_evidence[] = "Compute the evidence using a Laplace approximation at the MAP estimate.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_27log_G_evidence(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_maps = 0;
PyObject *__pyx_v_prior_mean = 0;
PyObject *__pyx_v_prior_stds = 0;
PyObject *__pyx_v_x = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("log_G_evidence (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keys,&__pyx_n_s_maps,&__pyx_n_s_prior_mean,&__pyx_n_s_prior_stds,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_eps,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_fd_method,0};
PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
values[8] = ((PyObject *)__pyx_float_1_eneg_3);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_26log_G_evidence(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_keys, PyObject *__pyx_v_maps, PyObject *__pyx_v_prior_mean, PyObject *__pyx_v_prior_stds, PyObject *__pyx_v_x, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_eps, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_fd_method) {
double __pyx_v_logP_MAPs;
Py_ssize_t __pyx_v_k;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_maps = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_flat_prior_mean = NULL;
PyObject *__pyx_v_flat_prior_stds = NULL;
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_scale = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_A = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("log_G_evidence", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("pyross.inference.SIR_type.log_G_evidence", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_maps);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_flat_prior_mean);
__Pyx_XDECREF(__pyx_v_flat_prior_stds);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_A);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0714: tangent=False, infer_scale_parameter=False, fd_method="central"):
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)__pyx_n_u_central);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence", 0, 8, 12, 1); __PYX_ERR(0, 713, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_mean)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence", 0, 8, 12, 2); __PYX_ERR(0, 713, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence", 0, 8, 12, 3); __PYX_ERR(0, 713, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence", 0, 8, 12, 4); __PYX_ERR(0, 713, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence", 0, 8, 12, 5); __PYX_ERR(0, 713, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence", 0, 8, 12, 6); __PYX_ERR(0, 713, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence", 0, 8, 12, 7); __PYX_ERR(0, 713, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[11] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_G_evidence") < 0)) __PYX_ERR(0, 713, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_keys = values[0];
__pyx_v_maps = values[1];
__pyx_v_prior_mean = values[2];
__pyx_v_prior_stds = values[3];
__pyx_v_x = values[4];
__pyx_v_Tf = values[5];
__pyx_v_Nf = values[6];
__pyx_v_contactMatrix = values[7];
__pyx_v_eps = values[8];
__pyx_v_tangent = values[9];
__pyx_v_infer_scale_parameter = values[10];
__pyx_v_fd_method = values[11];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("log_G_evidence", 0, 8, 12, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 713, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.log_G_evidence", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_26log_G_evidence(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_keys, __pyx_v_maps, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_eps, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_fd_method);
0715: """Compute the evidence using a Laplace approximation at the MAP estimate."""
0716: cdef double logP_MAPs
0717: cdef Py_ssize_t k
0718:
+0719: bounds = np.zeros((len(maps), 2)) # Create dummy bounds to pass to flatten function.
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 719, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 719, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = PyObject_Length(__pyx_v_maps); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 719, __pyx_L1_error) __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 719, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 719, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 719, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
+0720: flat_maps, _, _, _, _, _ \
__pyx_v_flat_maps = __pyx_t_3; __pyx_t_3 = 0; __pyx_v__ = __pyx_t_2; __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_9); __pyx_t_9 = 0;
+0721: = self._flatten_parameters(maps, prior_stds, bounds, infer_scale_parameter)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_2 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_6, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_6, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 721, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 720, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_2 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); __pyx_t_7 = PyList_GET_ITEM(sequence, 3); __pyx_t_8 = PyList_GET_ITEM(sequence, 4); __pyx_t_9 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_3,&__pyx_t_2,&__pyx_t_5,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 720, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_3,&__pyx_t_2,&__pyx_t_5,&__pyx_t_7,&__pyx_t_8,&__pyx_t_9}; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 720, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 6) < 0) __PYX_ERR(0, 720, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 720, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+0722: flat_prior_mean, flat_prior_stds, _, _, _, _ \
__pyx_v_flat_prior_mean = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_flat_prior_stds = __pyx_t_7; __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_3); __pyx_t_3 = 0;
+0723: = self._flatten_parameters(prior_mean, prior_stds, bounds, infer_scale_parameter)
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_v_prior_mean); __Pyx_GIVEREF(__pyx_v_prior_mean); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_prior_mean); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 722, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); __pyx_t_8 = PyList_GET_ITEM(sequence, 2); __pyx_t_5 = PyList_GET_ITEM(sequence, 3); __pyx_t_2 = PyList_GET_ITEM(sequence, 4); __pyx_t_3 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_9,&__pyx_t_7,&__pyx_t_8,&__pyx_t_5,&__pyx_t_2,&__pyx_t_3}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_9,&__pyx_t_7,&__pyx_t_8,&__pyx_t_5,&__pyx_t_2,&__pyx_t_3}; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 6) < 0) __PYX_ERR(0, 722, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 722, __pyx_L1_error) __pyx_L6_unpacking_done:; }
0724:
+0725: s, scale = pyross.utils.make_log_norm_dist(flat_prior_mean, flat_prior_stds)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_flat_prior_mean); __Pyx_GIVEREF(__pyx_v_flat_prior_mean); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_flat_prior_mean); __Pyx_INCREF(__pyx_v_flat_prior_stds); __Pyx_GIVEREF(__pyx_v_flat_prior_stds); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_flat_prior_stds); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 725, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 725, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_2)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_11(__pyx_t_2); if (unlikely(!__pyx_t_3)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_5 = __pyx_t_11(__pyx_t_2); if (unlikely(!__pyx_t_5)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_2), 2) < 0) __PYX_ERR(0, 725, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 725, __pyx_L1_error) __pyx_L8_unpacking_done:; } __pyx_v_s = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_scale = __pyx_t_5; __pyx_t_5 = 0;
+0726: parameters = self.fill_params_dict(keys, maps)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_keys, __pyx_v_maps}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_keys, __pyx_v_maps}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_keys); __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_maps); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 726, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_parameters = __pyx_t_1; __pyx_t_1 = 0;
+0727: logP_MAPs = -self.obtain_minus_log_p(parameters, x, Tf, Nf, contactMatrix)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_minus_log_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_2, __pyx_v_parameters, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_2, __pyx_v_parameters, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_v_parameters); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_v_x); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_6, __pyx_v_Nf); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_3, 4+__pyx_t_6, __pyx_v_contactMatrix); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 727, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_logP_MAPs = __pyx_t_12;
+0728: logP_MAPs += np.sum(lognorm.logpdf(flat_maps, s, scale=scale))
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_logP_MAPs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_flat_maps); __Pyx_GIVEREF(__pyx_v_flat_maps); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_flat_maps); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_s); __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 728, __pyx_L1_error) __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_7, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_9); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 728, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_logP_MAPs = __pyx_t_12;
+0729: k = flat_prior_mean.shape[0]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_flat_prior_mean, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 729, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_k = __pyx_t_4;
+0730: A = self.compute_hessian(keys, maps, prior_mean, prior_stds, x,Tf,Nf,contactMatrix,eps, tangent,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_compute_hessian); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_2 = PyTuple_New(11); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_keys); __Pyx_GIVEREF(__pyx_v_keys); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_keys); __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_mean); __Pyx_GIVEREF(__pyx_v_prior_mean); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_prior_mean); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_x); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_Nf); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_2, 7, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_v_eps); __Pyx_INCREF(__pyx_v_tangent); __Pyx_GIVEREF(__pyx_v_tangent); PyTuple_SET_ITEM(__pyx_t_2, 9, __pyx_v_tangent); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_2, 10, __pyx_v_infer_scale_parameter); /* … */ __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_A = __pyx_t_9; __pyx_t_9 = 0;
+0731: infer_scale_parameter, fd_method=fd_method)
__pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_fd_method, __pyx_v_fd_method) < 0) __PYX_ERR(0, 731, __pyx_L1_error)
+0732: return logP_MAPs - 0.5*np.log(np.linalg.det(A)) + k/2*np.log(2*np.pi)
__Pyx_XDECREF(__pyx_r); __pyx_t_9 = PyFloat_FromDouble(__pyx_v_logP_MAPs); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_linalg); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_det); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_v_A) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_A); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Subtract(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_k / 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_pi); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Multiply(__pyx_int_2, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_9 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_Multiply(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyNumber_Add(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 732, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0;
0733:
+0734: def obtain_minus_log_p(self, parameters, double [:, :] x, double Tf, int Nf, contactMatrix, tangent=False):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_29obtain_minus_log_p(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_29obtain_minus_log_p(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
__Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_Tf;
int __pyx_v_Nf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_minus_log_p (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_x,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_tangent,0};
PyObject* values[6] = {0,0,0,0,0,0};
values[5] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_minus_log_p", 0, 5, 6, 1); __PYX_ERR(0, 734, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_minus_log_p", 0, 5, 6, 2); __PYX_ERR(0, 734, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_minus_log_p", 0, 5, 6, 3); __PYX_ERR(0, 734, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_minus_log_p", 0, 5, 6, 4); __PYX_ERR(0, 734, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[5] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "obtain_minus_log_p") < 0)) __PYX_ERR(0, 734, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(0, 734, __pyx_L3_error)
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 734, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_Nf == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 734, __pyx_L3_error)
__pyx_v_contactMatrix = values[4];
__pyx_v_tangent = values[5];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("obtain_minus_log_p", 0, 5, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 734, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_minus_log_p", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_28obtain_minus_log_p(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_parameters, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_tangent);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_28obtain_minus_log_p(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_parameters, __Pyx_memviewslice __pyx_v_x, double __pyx_v_Tf, int __pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_tangent) {
PyObject *__pyx_v_model = NULL;
double __pyx_v_minus_logp;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_minus_log_p", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_minus_log_p", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_model);
__PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0735: cdef double minus_log_p
+0736: self.set_params(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0737: model = self.make_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 737, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_model = __pyx_t_1; __pyx_t_1 = 0;
+0738: if tangent:
__pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 738, __pyx_L1_error) if (__pyx_t_4) { /* … */ goto __pyx_L3; }
+0739: minus_logp = self.obtain_log_p_for_traj_tangent_space(x, Tf, Nf, model, contactMatrix)
__pyx_v_minus_logp = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_tangent_space(__pyx_v_self, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix);
0740: else:
+0741: minus_logp = self.obtain_log_p_for_traj(x, Tf, Nf, model, contactMatrix)
/*else*/ {
__pyx_v_minus_logp = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj(__pyx_v_self, __pyx_v_x, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix);
}
__pyx_L3:;
+0742: return minus_logp
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_minus_logp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 742, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
0743:
+0744: def _latent_infer_parameters_to_minimize(self, params, grad=0, param_keys=None, init_fltr=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_31_latent_infer_parameters_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_30_latent_infer_parameters_to_minimize[] = "Objective function for minimization call in laten_inference.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_31_latent_infer_parameters_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_grad = 0;
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_init_fltr = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_guesses = 0;
PyObject *__pyx_v_flat_guess_range = 0;
PyObject *__pyx_v_flat_param_guess_size = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_s = 0;
PyObject *__pyx_v_scale = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_fltr0 = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_infer_parameters_to_minimize (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_grad,&__pyx_n_s_param_keys,&__pyx_n_s_init_fltr,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_guesses,&__pyx_n_s_flat_guess_range,&__pyx_n_s_flat_param_guess_size,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_s,&__pyx_n_s_scale,&__pyx_n_s_obs0,&__pyx_n_s_fltr0,&__pyx_n_s_tangent,0};
PyObject* values[18] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)__pyx_int_0);
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_30_latent_infer_parameters_to_minimize(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_grad, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_init_fltr, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_guesses, PyObject *__pyx_v_flat_guess_range, PyObject *__pyx_v_flat_param_guess_size, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_s, PyObject *__pyx_v_scale, PyObject *__pyx_v_obs0, PyObject *__pyx_v_fltr0, PyObject *__pyx_v_tangent) {
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_x0 = NULL;
double __pyx_v_penalty;
PyObject *__pyx_v_minus_logp = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_infer_parameters_to_minimize", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_infer_parameters_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_minus_logp);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0745: is_scale_parameter=None, scaled_guesses=None,
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_None);
+0746: flat_guess_range=None, flat_param_guess_size=None,
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
+0747: obs=None, fltr=None, Tf=None, Nf=None, contactMatrix=None,
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
values[12] = ((PyObject *)Py_None);
+0748: s=None, scale=None, obs0=None, fltr0=None, tangent=None):
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)Py_None);
values[16] = ((PyObject *)Py_None);
values[17] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grad);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_guesses);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_guess_range);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_param_guess_size);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scale);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr0);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[17] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_latent_infer_parameters_to_minimize") < 0)) __PYX_ERR(0, 744, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_grad = values[1];
__pyx_v_param_keys = values[2];
__pyx_v_init_fltr = values[3];
__pyx_v_is_scale_parameter = values[4];
__pyx_v_scaled_guesses = values[5];
__pyx_v_flat_guess_range = values[6];
__pyx_v_flat_param_guess_size = values[7];
__pyx_v_obs = values[8];
__pyx_v_fltr = values[9];
__pyx_v_Tf = values[10];
__pyx_v_Nf = values[11];
__pyx_v_contactMatrix = values[12];
__pyx_v_s = values[13];
__pyx_v_scale = values[14];
__pyx_v_obs0 = values[15];
__pyx_v_fltr0 = values[16];
__pyx_v_tangent = values[17];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_latent_infer_parameters_to_minimize", 0, 1, 18, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 744, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_infer_parameters_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_30_latent_infer_parameters_to_minimize(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_grad, __pyx_v_param_keys, __pyx_v_init_fltr, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses, __pyx_v_flat_guess_range, __pyx_v_flat_param_guess_size, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_s, __pyx_v_scale, __pyx_v_obs0, __pyx_v_fltr0, __pyx_v_tangent);
0749: """Objective function for minimization call in laten_inference."""
+0750: inits = np.copy(params[flat_param_guess_size:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, &__pyx_v_flat_param_guess_size, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 750, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_inits = __pyx_t_1; __pyx_t_1 = 0;
0751:
0752: # Restore parameters from flattened parameters
+0753: orig_params = self._unflatten_parameters(params[:flat_param_guess_size], flat_guess_range, is_scale_parameter, scaled_guesses)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, NULL, &__pyx_v_flat_param_guess_size, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_2, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_2, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_v_flat_guess_range); __Pyx_GIVEREF(__pyx_v_flat_guess_range); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_flat_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_guesses); __Pyx_GIVEREF(__pyx_v_scaled_guesses); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_scaled_guesses); __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_orig_params = __pyx_t_1; __pyx_t_1 = 0;
0754:
+0755: parameters = self.fill_params_dict(param_keys, orig_params)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_param_keys, __pyx_v_orig_params}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_param_keys, __pyx_v_orig_params}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_v_orig_params); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 755, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_parameters = __pyx_t_1; __pyx_t_1 = 0;
+0756: self.set_params(parameters)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 756, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0757: model = self.make_det_model(parameters)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 757, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_model = __pyx_t_1; __pyx_t_1 = 0;
0758:
+0759: x0 = self.fill_initial_conditions(inits, obs0, init_fltr, fltr0)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_initial_conditions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_v_obs0, __pyx_v_init_fltr, __pyx_v_fltr0}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_v_obs0, __pyx_v_init_fltr, __pyx_v_fltr0}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_inits); __Pyx_GIVEREF(__pyx_v_inits); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_inits); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_obs0); __Pyx_INCREF(__pyx_v_init_fltr); __Pyx_GIVEREF(__pyx_v_init_fltr); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_init_fltr); __Pyx_INCREF(__pyx_v_fltr0); __Pyx_GIVEREF(__pyx_v_fltr0); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_fltr0); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_x0 = __pyx_t_1; __pyx_t_1 = 0;
+0760: penalty = self._penalty_from_negative_values(x0)
if (!(likely(((__pyx_v_x0) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x0, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 760, __pyx_L1_error) __pyx_v_penalty = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_penalty_from_negative_values(__pyx_v_self, ((PyArrayObject *)__pyx_v_x0));
+0761: x0[x0<0] = 0.1/self.N # set to be small and positive
__pyx_t_1 = PyFloat_FromDouble((0.1 / __pyx_v_self->N)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyObject_RichCompare(__pyx_v_x0, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 761, __pyx_L1_error) if (unlikely(PyObject_SetItem(__pyx_v_x0, __pyx_t_3, __pyx_t_1) < 0)) __PYX_ERR(0, 761, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0762:
+0763: minus_logp = self.obtain_log_p_for_traj_matrix_fltr(x0, obs, fltr, Tf, Nf, model, contactMatrix, tangent)
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 763, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_obs, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 763, __pyx_L1_error) if (!(likely(((__pyx_v_fltr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fltr, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 763, __pyx_L1_error) __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 763, __pyx_L1_error) __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 763, __pyx_L1_error) __pyx_t_12.__pyx_n = 1; __pyx_t_12.tangent = __pyx_v_tangent; __pyx_t_11 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_matrix_fltr(__pyx_v_self, __pyx_t_7, __pyx_t_8, ((PyArrayObject *)__pyx_v_fltr), __pyx_t_9, __pyx_t_10, __pyx_v_model, __pyx_v_contactMatrix, &__pyx_t_12); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __pyx_t_1 = PyFloat_FromDouble(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 763, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_minus_logp = __pyx_t_1; __pyx_t_1 = 0;
+0764: minus_logp -= np.sum(lognorm.logpdf(params, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_params); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_s); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 764, __pyx_L1_error) __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_13); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_InPlaceSubtract(__pyx_v_minus_logp, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 764, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_minus_logp, __pyx_t_6); __pyx_t_6 = 0;
0765:
0766: # add penalty for being negative
+0767: minus_logp += penalty*Nf
__pyx_t_6 = PyFloat_FromDouble(__pyx_v_penalty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = PyNumber_Multiply(__pyx_t_6, __pyx_v_Nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_minus_logp, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_minus_logp, __pyx_t_6); __pyx_t_6 = 0;
0768:
+0769: return minus_logp
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_minus_logp); __pyx_r = __pyx_v_minus_logp; goto __pyx_L0;
0770:
+0771: cdef np.ndarray _get_r_from_x(self, np.ndarray x):
static PyArrayObject *__pyx_f_6pyross_9inference_8SIR_type__get_r_from_x(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_x) {
PyArrayObject *__pyx_v_r = 0;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_get_r_from_x", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("pyross.inference.SIR_type._get_r_from_x", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_r);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0772: # this function will be overridden in case of extra (non-additive) compartments
0773: cdef:
0774: np.ndarray r
+0775: r = self.fi - np.sum(x.reshape((int(self.dim/self.M), self.M)), axis=0)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_self->dim / __pyx_v_self->M)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 775, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Subtract(((PyObject *)__pyx_v_self->fi), __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 775, __pyx_L1_error) __pyx_v_r = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+0776: return r
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_r)); __pyx_r = __pyx_v_r; goto __pyx_L0;
0777:
+0778: cdef double _penalty_from_negative_values(self, np.ndarray x0):
static double __pyx_f_6pyross_9inference_8SIR_type__penalty_from_negative_values(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_x0) {
double __pyx_v_eps;
double __pyx_v_dev;
PyArrayObject *__pyx_v_R_init = 0;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_penalty_from_negative_values", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_WriteUnraisable("pyross.inference.SIR_type._penalty_from_negative_values", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_R_init);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0779: cdef:
+0780: double eps=0.1/self.N, dev
__pyx_v_eps = (0.1 / __pyx_v_self->N);
0781: np.ndarray R_init
+0782: R_init = self._get_r_from_x(x0)
__pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_get_r_from_x(__pyx_v_self, __pyx_v_x0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_R_init = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+0783: dev = - (np.sum(R_init[R_init<0]) + np.sum(x0[x0<0]))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_R_init), __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 783, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_R_init), __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_x0), __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 783, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_x0), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Negative(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 783, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_dev = __pyx_t_6;
+0784: return (dev/eps)**2 + (dev/eps)**8
__pyx_r = (pow((__pyx_v_dev / __pyx_v_eps), 2.0) + pow((__pyx_v_dev / __pyx_v_eps), 8.0)); goto __pyx_L0;
0785:
0786:
+0787: def latent_infer_parameters(self, param_keys, np.ndarray init_fltr, np.ndarray guess, np.ndarray stds,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_33latent_infer_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_32latent_infer_parameters[] = "\n Compute the maximum a-posteriori (MAP) estimate of the parameters and the initial conditions of a SIR type model\n when the classes are only partially observed. Unobserved classes are treated as latent variables.\n\n Parameters\n ----------\n param_keys: list\n A list of parameters to be inferred.\n init_fltr: boolean array\n True for initial conditions to be inferred.\n Shape = (nClass*M)\n Total number of True = total no. of variables - total no. of observed\n guess: numpy.array or list\n Prior expectation for the parameter values listed, and prior for initial conditions.\n Expect of length len(param_keys)+ (total no. of variables - total no. of observed).\n Age-dependent rates can be inferred by supplying a guess that is an array instead a single float.\n stds: numpy.array\n Standard deviations for the log normal prior.\n obs: 2d numpy.array\n The observed trajectories with reduced number of variables\n (number of data points, (age groups * observed model classes))\n fltr: 2d numpy.array\n A matrix of shape (no. observed variables, no. total variables),\n such that obs_{ti} = fltr_{ij} * X_{tj}\n Tf: float\n Total time of the trajectory\n Nf: int\n Total number of data points along the trajectory\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n bounds: 2d numpy.array\n Bounds for the parameters + initial conditions\n ((number of parameters + number of initial conditions) x 2).\n Better bounds makes it easier to find the true global minimum.\n tangent: bool, optional\n Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.\n infer_scale_parameter: bool or ""list of bools (size: number of age-dependenly specified parameters)\n Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter\n for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each\n age-dependent parameter individually\n verbose: bool, optional\n Set to True to see intermediate outputs from the optimizer.\n ftol: float, optional\n Relative tolerance\n global_max_iter: int, optional\n Number of global optimisations performed.\n local_max_iter: int, optional\n Number of local optimisation performed.\n global_atol: float\n The absolute tolerance for global optimisation.\n enable_global: bool, optional\n Set to True to enable global optimisation.\n enable_local: bool, optional\n Set to True to enable local optimisation.\n cma_processes: int, optional\n Number of parallel processes used for global optimisation.\n cma_population: int, optional\n The number of samples used in each step of the CMA algorithm.\n cma_stds: int, optional\n The standard deviation used in cma global optimisation. If not specified, `cma_stds` is set to `stds`.\n obs0: numpy.array, optional\n Observed initial condition, if more detailed than obs[0]\n fltr0: 2d numpy.array, optional\n Matrix filter for obs0\n\n Returns\n -------\n params: nested list\n MAP estimate of paramters (nested if some parameters are age dependent) and initial values of the classes.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_33latent_infer_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_keys = 0;
PyArrayObject *__pyx_v_init_fltr = 0;
PyArrayObject *__pyx_v_guess = 0;
PyArrayObject *__pyx_v_stds = 0;
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_contactMatrix = 0;
PyArrayObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_full_output = 0;
double __pyx_v_ftol;
PyObject *__pyx_v_global_max_iter = 0;
PyObject *__pyx_v_local_max_iter = 0;
PyObject *__pyx_v_global_atol = 0;
PyObject *__pyx_v_enable_global = 0;
PyObject *__pyx_v_enable_local = 0;
PyObject *__pyx_v_cma_processes = 0;
PyObject *__pyx_v_cma_population = 0;
PyObject *__pyx_v_cma_stds = 0;
PyArrayObject *__pyx_v_obs0 = 0;
PyArrayObject *__pyx_v_fltr0 = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_parameters (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_keys,&__pyx_n_s_init_fltr,&__pyx_n_s_guess,&__pyx_n_s_stds,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_bounds,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_verbose,&__pyx_n_s_full_output,&__pyx_n_s_ftol,&__pyx_n_s_global_max_iter,&__pyx_n_s_local_max_iter,&__pyx_n_s_global_atol,&__pyx_n_s_enable_global,&__pyx_n_s_enable_local,&__pyx_n_s_cma_processes,&__pyx_n_s_cma_population,&__pyx_n_s_cma_stds,&__pyx_n_s_obs0,&__pyx_n_s_fltr0,0};
PyObject* values[25] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_32latent_infer_parameters(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_param_keys, PyArrayObject *__pyx_v_init_fltr, PyArrayObject *__pyx_v_guess, PyArrayObject *__pyx_v_stds, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyArrayObject *__pyx_v_bounds, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_verbose, PyObject *__pyx_v_full_output, double __pyx_v_ftol, PyObject *__pyx_v_global_max_iter, PyObject *__pyx_v_local_max_iter, PyObject *__pyx_v_global_atol, PyObject *__pyx_v_enable_global, PyObject *__pyx_v_enable_local, PyObject *__pyx_v_cma_processes, PyObject *__pyx_v_cma_population, PyObject *__pyx_v_cma_stds, PyArrayObject *__pyx_v_obs0, PyArrayObject *__pyx_v_fltr0) {
Py_ssize_t __pyx_v_param_dim;
PyObject *__pyx_v_flat_param_guess = NULL;
PyObject *__pyx_v_flat_param_stds = NULL;
PyObject *__pyx_v_flat_param_bounds = NULL;
PyObject *__pyx_v_flat_param_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_param_guesses = NULL;
PyObject *__pyx_v_init_guess = NULL;
PyObject *__pyx_v_init_stds = NULL;
PyObject *__pyx_v_init_bounds = NULL;
PyObject *__pyx_v_flat_guess = NULL;
PyObject *__pyx_v_flat_stds = NULL;
PyObject *__pyx_v_flat_bounds = NULL;
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_scale = NULL;
PyObject *__pyx_v_flat_cma_stds = NULL;
PyObject *__pyx_v_flat_cma_stds_params = NULL;
PyObject *__pyx_v_cma_stds_init = NULL;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_minimize_args = NULL;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_v_estimates = NULL;
PyObject *__pyx_v_flat_param_estimates = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_parameters", 0);
__Pyx_INCREF((PyObject *)__pyx_v_obs);
__Pyx_INCREF((PyObject *)__pyx_v_fltr);
__Pyx_INCREF((PyObject *)__pyx_v_obs0);
__Pyx_INCREF((PyObject *)__pyx_v_fltr0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_flat_param_guess);
__Pyx_XDECREF(__pyx_v_flat_param_stds);
__Pyx_XDECREF(__pyx_v_flat_param_bounds);
__Pyx_XDECREF(__pyx_v_flat_param_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_param_guesses);
__Pyx_XDECREF(__pyx_v_init_guess);
__Pyx_XDECREF(__pyx_v_init_stds);
__Pyx_XDECREF(__pyx_v_init_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess);
__Pyx_XDECREF(__pyx_v_flat_stds);
__Pyx_XDECREF(__pyx_v_flat_bounds);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_flat_cma_stds);
__Pyx_XDECREF(__pyx_v_flat_cma_stds_params);
__Pyx_XDECREF(__pyx_v_cma_stds_init);
__Pyx_XDECREF(__pyx_v_minimize_args);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XDECREF(__pyx_v_estimates);
__Pyx_XDECREF(__pyx_v_flat_param_estimates);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF((PyObject *)__pyx_v_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr);
__Pyx_XDECREF((PyObject *)__pyx_v_obs0);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr0);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0788: np.ndarray obs, np.ndarray fltr,
0789: double Tf, Py_ssize_t Nf, contactMatrix, np.ndarray bounds,
+0790: tangent=False, infer_scale_parameter=False,
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)Py_False);
+0791: verbose=False, full_output=False, double ftol=1e-5,
values[12] = ((PyObject *)Py_False);
values[13] = ((PyObject *)Py_False);
values[15] = ((PyObject *)__pyx_int_100);
values[16] = ((PyObject *)__pyx_int_100);
values[17] = ((PyObject *)__pyx_int_1);
0792: global_max_iter=100, local_max_iter=100, global_atol=1,
+0793: enable_global=True, enable_local=True, cma_processes=0,
values[18] = ((PyObject *)Py_True);
values[19] = ((PyObject *)Py_True);
values[20] = ((PyObject *)__pyx_int_0);
values[21] = ((PyObject *)__pyx_int_16);
+0794: cma_population=16, cma_stds=None, np.ndarray obs0=None, np.ndarray fltr0=None):
values[22] = ((PyObject *)Py_None);
values[23] = (PyObject *)((PyArrayObject *)Py_None);
values[24] = (PyObject *)((PyArrayObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 25: values[24] = PyTuple_GET_ITEM(__pyx_args, 24);
CYTHON_FALLTHROUGH;
case 24: values[23] = PyTuple_GET_ITEM(__pyx_args, 23);
CYTHON_FALLTHROUGH;
case 23: values[22] = PyTuple_GET_ITEM(__pyx_args, 22);
CYTHON_FALLTHROUGH;
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, 1); __PYX_ERR(0, 787, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_guess)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, 2); __PYX_ERR(0, 787, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, 3); __PYX_ERR(0, 787, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, 4); __PYX_ERR(0, 787, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, 5); __PYX_ERR(0, 787, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, 6); __PYX_ERR(0, 787, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, 7); __PYX_ERR(0, 787, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, 8); __PYX_ERR(0, 787, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 9:
if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, 9); __PYX_ERR(0, 787, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_full_output);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ftol);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_max_iter);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_max_iter);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_atol);
if (value) { values[17] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 18:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_global);
if (value) { values[18] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 19:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_local);
if (value) { values[19] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 20:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_processes);
if (value) { values[20] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 21:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_population);
if (value) { values[21] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 22:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_stds);
if (value) { values[22] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 23:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[23] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 24:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr0);
if (value) { values[24] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_infer_parameters") < 0)) __PYX_ERR(0, 787, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 25: values[24] = PyTuple_GET_ITEM(__pyx_args, 24);
CYTHON_FALLTHROUGH;
case 24: values[23] = PyTuple_GET_ITEM(__pyx_args, 23);
CYTHON_FALLTHROUGH;
case 23: values[22] = PyTuple_GET_ITEM(__pyx_args, 22);
CYTHON_FALLTHROUGH;
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_keys = values[0];
__pyx_v_init_fltr = ((PyArrayObject *)values[1]);
__pyx_v_guess = ((PyArrayObject *)values[2]);
__pyx_v_stds = ((PyArrayObject *)values[3]);
__pyx_v_obs = ((PyArrayObject *)values[4]);
__pyx_v_fltr = ((PyArrayObject *)values[5]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[6]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 789, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[7]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 789, __pyx_L3_error)
__pyx_v_contactMatrix = values[8];
__pyx_v_bounds = ((PyArrayObject *)values[9]);
__pyx_v_tangent = values[10];
__pyx_v_infer_scale_parameter = values[11];
__pyx_v_verbose = values[12];
__pyx_v_full_output = values[13];
if (values[14]) {
__pyx_v_ftol = __pyx_PyFloat_AsDouble(values[14]); if (unlikely((__pyx_v_ftol == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 791, __pyx_L3_error)
} else {
__pyx_v_ftol = ((double)1e-5);
}
__pyx_v_global_max_iter = values[15];
__pyx_v_local_max_iter = values[16];
__pyx_v_global_atol = values[17];
__pyx_v_enable_global = values[18];
__pyx_v_enable_local = values[19];
__pyx_v_cma_processes = values[20];
__pyx_v_cma_population = values[21];
__pyx_v_cma_stds = values[22];
__pyx_v_obs0 = ((PyArrayObject *)values[23]);
__pyx_v_fltr0 = ((PyArrayObject *)values[24]);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters", 0, 10, 25, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 787, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_init_fltr), __pyx_ptype_5numpy_ndarray, 1, "init_fltr", 0))) __PYX_ERR(0, 787, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_guess), __pyx_ptype_5numpy_ndarray, 1, "guess", 0))) __PYX_ERR(0, 787, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_stds), __pyx_ptype_5numpy_ndarray, 1, "stds", 0))) __PYX_ERR(0, 787, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 788, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 788, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bounds), __pyx_ptype_5numpy_ndarray, 1, "bounds", 0))) __PYX_ERR(0, 789, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs0), __pyx_ptype_5numpy_ndarray, 1, "obs0", 0))) __PYX_ERR(0, 794, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr0), __pyx_ptype_5numpy_ndarray, 1, "fltr0", 0))) __PYX_ERR(0, 794, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_32latent_infer_parameters(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_param_keys, __pyx_v_init_fltr, __pyx_v_guess, __pyx_v_stds, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_bounds, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_verbose, __pyx_v_full_output, __pyx_v_ftol, __pyx_v_global_max_iter, __pyx_v_local_max_iter, __pyx_v_global_atol, __pyx_v_enable_global, __pyx_v_enable_local, __pyx_v_cma_processes, __pyx_v_cma_population, __pyx_v_cma_stds, __pyx_v_obs0, __pyx_v_fltr0);
0795: """
0796: Compute the maximum a-posteriori (MAP) estimate of the parameters and the initial conditions of a SIR type model
0797: when the classes are only partially observed. Unobserved classes are treated as latent variables.
0798:
0799: Parameters
0800: ----------
0801: param_keys: list
0802: A list of parameters to be inferred.
0803: init_fltr: boolean array
0804: True for initial conditions to be inferred.
0805: Shape = (nClass*M)
0806: Total number of True = total no. of variables - total no. of observed
0807: guess: numpy.array or list
0808: Prior expectation for the parameter values listed, and prior for initial conditions.
0809: Expect of length len(param_keys)+ (total no. of variables - total no. of observed).
0810: Age-dependent rates can be inferred by supplying a guess that is an array instead a single float.
0811: stds: numpy.array
0812: Standard deviations for the log normal prior.
0813: obs: 2d numpy.array
0814: The observed trajectories with reduced number of variables
0815: (number of data points, (age groups * observed model classes))
0816: fltr: 2d numpy.array
0817: A matrix of shape (no. observed variables, no. total variables),
0818: such that obs_{ti} = fltr_{ij} * X_{tj}
0819: Tf: float
0820: Total time of the trajectory
0821: Nf: int
0822: Total number of data points along the trajectory
0823: contactMatrix: callable
0824: A function that returns the contact matrix at time t (input).
0825: bounds: 2d numpy.array
0826: Bounds for the parameters + initial conditions
0827: ((number of parameters + number of initial conditions) x 2).
0828: Better bounds makes it easier to find the true global minimum.
0829: tangent: bool, optional
0830: Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.
0831: infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)
0832: Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter
0833: for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each
0834: age-dependent parameter individually
0835: verbose: bool, optional
0836: Set to True to see intermediate outputs from the optimizer.
0837: ftol: float, optional
0838: Relative tolerance
0839: global_max_iter: int, optional
0840: Number of global optimisations performed.
0841: local_max_iter: int, optional
0842: Number of local optimisation performed.
0843: global_atol: float
0844: The absolute tolerance for global optimisation.
0845: enable_global: bool, optional
0846: Set to True to enable global optimisation.
0847: enable_local: bool, optional
0848: Set to True to enable local optimisation.
0849: cma_processes: int, optional
0850: Number of parallel processes used for global optimisation.
0851: cma_population: int, optional
0852: The number of samples used in each step of the CMA algorithm.
0853: cma_stds: int, optional
0854: The standard deviation used in cma global optimisation. If not specified, `cma_stds` is set to `stds`.
0855: obs0: numpy.array, optional
0856: Observed initial condition, if more detailed than obs[0]
0857: fltr0: 2d numpy.array, optional
0858: Matrix filter for obs0
0859:
0860: Returns
0861: -------
0862: params: nested list
0863: MAP estimate of paramters (nested if some parameters are age dependent) and initial values of the classes.
0864: """
0865: cdef:
+0866: Py_ssize_t param_dim = len(param_keys)
__pyx_t_1 = PyObject_Length(__pyx_v_param_keys); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 866, __pyx_L1_error) __pyx_v_param_dim = __pyx_t_1;
0867:
+0868: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_fltr), __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 868, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_fltr), __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 868, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 868, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 868, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
+0869: if obs0 is None or fltr0 is None:
__pyx_t_9 = (((PyObject *)__pyx_v_obs0) == Py_None);
__pyx_t_10 = (__pyx_t_9 != 0);
if (!__pyx_t_10) {
} else {
__pyx_t_8 = __pyx_t_10;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_10 = (((PyObject *)__pyx_v_fltr0) == Py_None);
__pyx_t_9 = (__pyx_t_10 != 0);
__pyx_t_8 = __pyx_t_9;
__pyx_L4_bool_binop_done:;
if (__pyx_t_8) {
/* … */
}
0870: # Use the same filter and observation for initial condition as for the rest of the trajectory, unless specified otherwise
+0871: obs0=obs[0]
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_obs), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 871, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 871, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_obs0, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
+0872: fltr0=fltr[0]
__pyx_t_2 = __Pyx_GetItemInt(((PyObject *)__pyx_v_fltr), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 872, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 872, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr0, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
0873:
+0874: obs = pyross.utils.process_obs(obs[1:], Nf-1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_process_obs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_obs), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_11 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_6, __pyx_t_4); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 874, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_obs, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
+0875: fltr = fltr[1:]
__pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_fltr), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 875, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
0876:
+0877: assert int(np.sum(init_fltr)) == self.dim - fltr0.shape[0]
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 877, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
__pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, ((PyObject *)__pyx_v_init_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_11, ((PyObject *)__pyx_v_init_fltr));
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 877, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 877, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyInt_FromSsize_t((__pyx_v_self->dim - (__pyx_v_fltr0->dimensions[0]))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 877, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = PyObject_RichCompare(__pyx_t_11, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 877, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 877, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_8)) {
PyErr_SetNone(PyExc_AssertionError);
__PYX_ERR(0, 877, __pyx_L1_error)
}
}
#endif
+0878: assert len(guess) == param_dim + int(np.sum(init_fltr)), 'len(guess) must equal to total number of params + inits to be inferred'
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_guess)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 878, __pyx_L1_error)
__pyx_t_3 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_2 = PyInt_FromSsize_t(__pyx_v_param_dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
__pyx_t_11 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, ((PyObject *)__pyx_v_init_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_7, ((PyObject *)__pyx_v_init_fltr));
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyNumber_Int(__pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = PyNumber_Add(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 878, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = PyObject_RichCompare(__pyx_t_3, __pyx_t_11, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 878, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 878, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_8)) {
PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_len_guess_must_equal_to_total_nu);
__PYX_ERR(0, 878, __pyx_L1_error)
}
}
#endif
0879:
0880: # Transfer the parameter parts of guess, stds, ... which can contain arrays as entries for age-dependent rates to a flat list
+0881: flat_param_guess, flat_param_stds, flat_param_bounds, flat_param_guess_range, is_scale_parameter, scaled_param_guesses \
__pyx_v_flat_param_guess = __pyx_t_11; __pyx_t_11 = 0; __pyx_v_flat_param_stds = __pyx_t_12; __pyx_t_12 = 0; __pyx_v_flat_param_bounds = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_flat_param_guess_range = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_is_scale_parameter = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_scaled_param_guesses = __pyx_t_5; __pyx_t_5 = 0;
+0882: = self._flatten_parameters(guess[:param_dim], stds[:param_dim], bounds[:param_dim], infer_scale_parameter)
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_3 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_guess), 0, __pyx_v_param_dim, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_stds), 0, __pyx_v_param_dim, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_bounds), 0, __pyx_v_param_dim, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_3, __pyx_t_2, __pyx_t_4, __pyx_v_infer_scale_parameter}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_3, __pyx_t_2, __pyx_t_4, __pyx_v_infer_scale_parameter}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_12 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_6, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_6, __pyx_v_infer_scale_parameter); __pyx_t_3 = 0; __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 882, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 881, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_11 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_2 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_11 = PyList_GET_ITEM(sequence, 0); __pyx_t_12 = PyList_GET_ITEM(sequence, 1); __pyx_t_4 = PyList_GET_ITEM(sequence, 2); __pyx_t_2 = PyList_GET_ITEM(sequence, 3); __pyx_t_3 = PyList_GET_ITEM(sequence, 4); __pyx_t_5 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_11,&__pyx_t_12,&__pyx_t_4,&__pyx_t_2,&__pyx_t_3,&__pyx_t_5}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_11,&__pyx_t_12,&__pyx_t_4,&__pyx_t_2,&__pyx_t_3,&__pyx_t_5}; __pyx_t_13 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 6) < 0) __PYX_ERR(0, 881, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 881, __pyx_L1_error) __pyx_L7_unpacking_done:; }
0883:
0884: # Concatenate the flattend parameter guess with init guess
+0885: init_guess = guess[param_dim:]
__pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_guess), __pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_init_guess = __pyx_t_7; __pyx_t_7 = 0;
+0886: init_stds = stds[param_dim:]
__pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_stds), __pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 886, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_init_stds = __pyx_t_7; __pyx_t_7 = 0;
+0887: init_bounds = bounds[param_dim:]
__pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_bounds), __pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 887, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_init_bounds = __pyx_t_7; __pyx_t_7 = 0;
+0888: flat_guess = np.concatenate([flat_param_guess, init_guess]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_flat_param_guess); __Pyx_GIVEREF(__pyx_v_flat_param_guess); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_flat_param_guess); __Pyx_INCREF(__pyx_v_init_guess); __Pyx_GIVEREF(__pyx_v_init_guess); PyList_SET_ITEM(__pyx_t_3, 1, __pyx_v_init_guess); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_astype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_flat_guess = __pyx_t_7; __pyx_t_7 = 0;
+0889: flat_stds = np.concatenate([flat_param_stds,init_stds]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_flat_param_stds); __Pyx_GIVEREF(__pyx_v_flat_param_stds); PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_flat_param_stds); __Pyx_INCREF(__pyx_v_init_stds); __Pyx_GIVEREF(__pyx_v_init_stds); PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_init_stds); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_astype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_flat_stds = __pyx_t_7; __pyx_t_7 = 0;
+0890: flat_bounds = np.concatenate([flat_param_bounds, init_bounds], axis=0).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_flat_param_bounds); __Pyx_GIVEREF(__pyx_v_flat_param_bounds); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_flat_param_bounds); __Pyx_INCREF(__pyx_v_init_bounds); __Pyx_GIVEREF(__pyx_v_init_bounds); PyList_SET_ITEM(__pyx_t_3, 1, __pyx_v_init_bounds); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 890, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_astype); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 890, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_flat_bounds = __pyx_t_7; __pyx_t_7 = 0;
0891:
+0892: s, scale = pyross.utils.make_log_norm_dist(flat_guess, flat_stds)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_flat_guess); __Pyx_GIVEREF(__pyx_v_flat_guess); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_flat_guess); __Pyx_INCREF(__pyx_v_flat_stds); __Pyx_GIVEREF(__pyx_v_flat_stds); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_flat_stds); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 892, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_14(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_5 = __pyx_t_14(__pyx_t_4); if (unlikely(!__pyx_t_5)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_4), 2) < 0) __PYX_ERR(0, 892, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 892, __pyx_L1_error) __pyx_L9_unpacking_done:; } __pyx_v_s = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_scale = __pyx_t_5; __pyx_t_5 = 0;
0893:
+0894: if cma_stds is None:
__pyx_t_8 = (__pyx_v_cma_stds == Py_None);
__pyx_t_9 = (__pyx_t_8 != 0);
if (__pyx_t_9) {
/* … */
goto __pyx_L10;
}
0895: # Use prior standard deviations here
+0896: flat_cma_stds = flat_stds
__Pyx_INCREF(__pyx_v_flat_stds);
__pyx_v_flat_cma_stds = __pyx_v_flat_stds;
0897: else:
+0898: flat_cma_stds_params = np.zeros(len(flat_param_guess))
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_1 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 898, __pyx_L1_error)
__pyx_t_5 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_3, function);
}
}
__pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5);
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_v_flat_cma_stds_params = __pyx_t_7;
__pyx_t_7 = 0;
+0899: cma_stds_init = cma_stds[param_dim:]
__pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_cma_stds, __pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 899, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_cma_stds_init = __pyx_t_7; __pyx_t_7 = 0;
+0900: for i in range(param_dim):
__pyx_t_1 = __pyx_v_param_dim;
__pyx_t_15 = __pyx_t_1;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
+0901: flat_cma_stds_params[flat_param_guess_range[i]] = cma_stds[i]
__pyx_t_7 = __Pyx_GetItemInt(__pyx_v_cma_stds, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_flat_param_guess_range, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyObject_SetItem(__pyx_v_flat_cma_stds_params, __pyx_t_3, __pyx_t_7) < 0)) __PYX_ERR(0, 901, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; }
+0902: flat_cma_stds = np.concatenate([flat_cma_stds_params, cma_stds_init])
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_flat_cma_stds_params); __Pyx_GIVEREF(__pyx_v_flat_cma_stds_params); PyList_SET_ITEM(__pyx_t_3, 0, __pyx_v_flat_cma_stds_params); __Pyx_INCREF(__pyx_v_cma_stds_init); __Pyx_GIVEREF(__pyx_v_cma_stds_init); PyList_SET_ITEM(__pyx_t_3, 1, __pyx_v_cma_stds_init); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_3); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_flat_cma_stds = __pyx_t_7; __pyx_t_7 = 0; } __pyx_L10:;
0903:
+0904: minimize_args = {'param_keys':param_keys, 'init_fltr':init_fltr,
__pyx_t_7 = __Pyx_PyDict_NewPresized(16); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 904, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_param_keys, __pyx_v_param_keys) < 0) __PYX_ERR(0, 904, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_init_fltr, ((PyObject *)__pyx_v_init_fltr)) < 0) __PYX_ERR(0, 904, __pyx_L1_error)
+0905: 'is_scale_parameter':is_scale_parameter,
if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 904, __pyx_L1_error)
+0906: 'scaled_guesses':scaled_param_guesses, 'flat_guess_range':flat_param_guess_range,
if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_scaled_guesses, __pyx_v_scaled_param_guesses) < 0) __PYX_ERR(0, 904, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_flat_guess_range, __pyx_v_flat_param_guess_range) < 0) __PYX_ERR(0, 904, __pyx_L1_error)
+0907: 'flat_param_guess_size':len(flat_param_guess),
__pyx_t_1 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 907, __pyx_L1_error) __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_flat_param_guess_size, __pyx_t_5) < 0) __PYX_ERR(0, 904, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+0908: 'obs':obs, 'fltr':fltr, 'Tf':Tf, 'Nf':Nf, 'contactMatrix':contactMatrix,
if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_obs, ((PyObject *)__pyx_v_obs)) < 0) __PYX_ERR(0, 904, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_fltr, ((PyObject *)__pyx_v_fltr)) < 0) __PYX_ERR(0, 904, __pyx_L1_error) __pyx_t_5 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 908, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_Tf, __pyx_t_5) < 0) __PYX_ERR(0, 904, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 908, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_Nf, __pyx_t_5) < 0) __PYX_ERR(0, 904, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 904, __pyx_L1_error)
+0909: 's':s, 'scale':scale, 'obs0':obs0, 'fltr0':fltr0, 'tangent':tangent}
if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_s, __pyx_v_s) < 0) __PYX_ERR(0, 904, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 904, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_obs0, ((PyObject *)__pyx_v_obs0)) < 0) __PYX_ERR(0, 904, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_fltr0, ((PyObject *)__pyx_v_fltr0)) < 0) __PYX_ERR(0, 904, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 904, __pyx_L1_error) __pyx_v_minimize_args = ((PyObject*)__pyx_t_7); __pyx_t_7 = 0;
0910:
+0911: res = minimization(self._latent_infer_parameters_to_minimize, flat_guess, flat_bounds, ftol=ftol,
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_minimization); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer_parameters_to_mini); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_INCREF(__pyx_v_flat_guess); __Pyx_GIVEREF(__pyx_v_flat_guess); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_flat_guess); __Pyx_INCREF(__pyx_v_flat_bounds); __Pyx_GIVEREF(__pyx_v_flat_bounds); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_flat_bounds); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_ftol); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_ftol, __pyx_t_4) < 0) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 911, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_res = __pyx_t_4; __pyx_t_4 = 0;
+0912: global_max_iter=global_max_iter, local_max_iter=local_max_iter, global_atol=global_atol,
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_global_max_iter, __pyx_v_global_max_iter) < 0) __PYX_ERR(0, 911, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_local_max_iter, __pyx_v_local_max_iter) < 0) __PYX_ERR(0, 911, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_global_atol, __pyx_v_global_atol) < 0) __PYX_ERR(0, 911, __pyx_L1_error)
+0913: enable_global=enable_global, enable_local=enable_local, cma_processes=cma_processes,
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_enable_global, __pyx_v_enable_global) < 0) __PYX_ERR(0, 911, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_enable_local, __pyx_v_enable_local) < 0) __PYX_ERR(0, 911, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cma_processes, __pyx_v_cma_processes) < 0) __PYX_ERR(0, 911, __pyx_L1_error)
+0914: cma_population=cma_population, cma_stds=flat_cma_stds, verbose=verbose, args_dict=minimize_args)
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cma_population, __pyx_v_cma_population) < 0) __PYX_ERR(0, 911, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cma_stds, __pyx_v_flat_cma_stds) < 0) __PYX_ERR(0, 911, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 911, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_args_dict, __pyx_v_minimize_args) < 0) __PYX_ERR(0, 911, __pyx_L1_error)
0915:
+0916: estimates = res[0]
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 916, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_estimates = __pyx_t_4; __pyx_t_4 = 0;
0917:
0918: # Get the parameters (in their original structure) from the flattened parameter vector.
+0919: flat_param_estimates = estimates[:len(flat_param_guess)]
__pyx_t_1 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 919, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_estimates, 0, __pyx_t_1, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 919, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_v_flat_param_estimates = __pyx_t_4; __pyx_t_4 = 0;
+0920: orig_params = self._unflatten_parameters(flat_param_estimates, flat_param_guess_range, is_scale_parameter,
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5);
+0921: scaled_param_guesses)
__pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_flat_param_estimates, __pyx_v_flat_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 920, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_flat_param_estimates, __pyx_v_flat_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 920, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_4); } else #endif { __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_flat_param_estimates); __Pyx_GIVEREF(__pyx_v_flat_param_estimates); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_v_flat_param_estimates); __Pyx_INCREF(__pyx_v_flat_param_guess_range); __Pyx_GIVEREF(__pyx_v_flat_param_guess_range); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_flat_param_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_param_guesses); __Pyx_GIVEREF(__pyx_v_scaled_param_guesses); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_scaled_param_guesses); __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 920, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_orig_params = __pyx_t_4; __pyx_t_4 = 0;
+0922: orig_params = [*orig_params, *estimates[len(flat_param_guess):]]
__pyx_t_4 = PySequence_List(__pyx_v_orig_params); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 922, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 922, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_estimates, __pyx_t_1, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 922, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_PyList_Extend(__pyx_t_4, __pyx_t_5) < 0) __PYX_ERR(0, 922, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_orig_params, __pyx_t_4); __pyx_t_4 = 0;
0923:
+0924: if full_output:
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_full_output); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 924, __pyx_L1_error) if (__pyx_t_9) { /* … */ }
+0925: return np.array(orig_params), res[1]
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_5, __pyx_v_orig_params) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_orig_params); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_res, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 925, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7); __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
0926: else:
+0927: return np.array(orig_params)
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 927, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 927, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
__pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_v_orig_params) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_orig_params);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 927, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_5;
__pyx_t_5 = 0;
goto __pyx_L0;
}
0928:
+0929: def _latent_lin_mode_init_to_minimize(self, params, grad=0, param_keys=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_35_latent_lin_mode_init_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_34_latent_lin_mode_init_to_minimize[] = "Objective function for minimization call in laten_inference.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_35_latent_lin_mode_init_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_grad = 0;
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_guesses = 0;
PyObject *__pyx_v_flat_guess_range = 0;
PyObject *__pyx_v_flat_param_guess_size = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_s = 0;
PyObject *__pyx_v_scale = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_lin_mode_init_to_minimize (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_grad,&__pyx_n_s_param_keys,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_guesses,&__pyx_n_s_flat_guess_range,&__pyx_n_s_flat_param_guess_size,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_s,&__pyx_n_s_scale,&__pyx_n_s_tangent,0};
PyObject* values[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)__pyx_int_0);
values[2] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_34_latent_lin_mode_init_to_minimize(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_grad, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_guesses, PyObject *__pyx_v_flat_guess_range, PyObject *__pyx_v_flat_param_guess_size, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_s, PyObject *__pyx_v_scale, PyObject *__pyx_v_tangent) {
PyObject *__pyx_v_coeff = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_x0 = NULL;
double __pyx_v_penalty;
PyObject *__pyx_v_minus_logp = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_lin_mode_init_to_minimize", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_lin_mode_init_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_coeff);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_minus_logp);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0930: is_scale_parameter=None, scaled_guesses=None,
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
+0931: flat_guess_range=None, flat_param_guess_size=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
+0932: obs=None, fltr=None, Tf=None, Nf=None, contactMatrix=None,
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
+0933: s=None, scale=None, tangent=None):
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grad);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_guesses);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_guess_range);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_param_guess_size);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scale);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[14] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_latent_lin_mode_init_to_minimize") < 0)) __PYX_ERR(0, 929, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_grad = values[1];
__pyx_v_param_keys = values[2];
__pyx_v_is_scale_parameter = values[3];
__pyx_v_scaled_guesses = values[4];
__pyx_v_flat_guess_range = values[5];
__pyx_v_flat_param_guess_size = values[6];
__pyx_v_obs = values[7];
__pyx_v_fltr = values[8];
__pyx_v_Tf = values[9];
__pyx_v_Nf = values[10];
__pyx_v_contactMatrix = values[11];
__pyx_v_s = values[12];
__pyx_v_scale = values[13];
__pyx_v_tangent = values[14];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_latent_lin_mode_init_to_minimize", 0, 1, 15, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 929, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_lin_mode_init_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_34_latent_lin_mode_init_to_minimize(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_grad, __pyx_v_param_keys, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses, __pyx_v_flat_guess_range, __pyx_v_flat_param_guess_size, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_s, __pyx_v_scale, __pyx_v_tangent);
0934: """Objective function for minimization call in laten_inference."""
+0935: coeff = params[flat_param_guess_size]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_params, __pyx_v_flat_param_guess_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 935, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_coeff = __pyx_t_1; __pyx_t_1 = 0;
0936:
0937: # Restore parameters from flattened parameters
+0938: orig_params = self._unflatten_parameters(params[:flat_param_guess_size], flat_guess_range, is_scale_parameter, scaled_guesses)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, NULL, &__pyx_v_flat_param_guess_size, NULL, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_3, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_3, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_v_flat_guess_range); __Pyx_GIVEREF(__pyx_v_flat_guess_range); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_flat_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_guesses); __Pyx_GIVEREF(__pyx_v_scaled_guesses); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_scaled_guesses); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 938, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_orig_params = __pyx_t_1; __pyx_t_1 = 0;
0939:
+0940: parameters = self.fill_params_dict(param_keys, orig_params)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 940, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_param_keys, __pyx_v_orig_params}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 940, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_param_keys, __pyx_v_orig_params}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 940, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 940, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_orig_params); __Pyx_GIVEREF(__pyx_v_orig_params); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_orig_params); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 940, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_parameters = __pyx_t_1; __pyx_t_1 = 0;
+0941: self.set_params(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+0942: model = self.make_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_model = __pyx_t_1; __pyx_t_1 = 0;
0943:
+0944: x0 = self.lin_mode_inits(coeff, contactMatrix)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lin_mode_inits); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_coeff, __pyx_v_contactMatrix}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_coeff, __pyx_v_contactMatrix}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_coeff); __Pyx_GIVEREF(__pyx_v_coeff); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_coeff); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_contactMatrix); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_x0 = __pyx_t_1; __pyx_t_1 = 0;
+0945: penalty = self._penalty_from_negative_values(x0)
if (!(likely(((__pyx_v_x0) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_x0, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 945, __pyx_L1_error) __pyx_v_penalty = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->_penalty_from_negative_values(__pyx_v_self, ((PyArrayObject *)__pyx_v_x0));
+0946: x0[x0<0] = 0.1/self.N # set to be small and positive
__pyx_t_1 = PyFloat_FromDouble((0.1 / __pyx_v_self->N)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_RichCompare(__pyx_v_x0, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 946, __pyx_L1_error) if (unlikely(PyObject_SetItem(__pyx_v_x0, __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(0, 946, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
0947:
+0948: minus_logp = self.obtain_log_p_for_traj_matrix_fltr(x0, obs, fltr, Tf, Nf, model, contactMatrix, tangent)
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 948, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_obs, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 948, __pyx_L1_error) if (!(likely(((__pyx_v_fltr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fltr, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 948, __pyx_L1_error) __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 948, __pyx_L1_error) __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 948, __pyx_L1_error) __pyx_t_12.__pyx_n = 1; __pyx_t_12.tangent = __pyx_v_tangent; __pyx_t_11 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_matrix_fltr(__pyx_v_self, __pyx_t_7, __pyx_t_8, ((PyArrayObject *)__pyx_v_fltr), __pyx_t_9, __pyx_t_10, __pyx_v_model, __pyx_v_contactMatrix, &__pyx_t_12); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __pyx_t_1 = PyFloat_FromDouble(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 948, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_minus_logp = __pyx_t_1; __pyx_t_1 = 0;
+0949: minus_logp -= np.sum(lognorm.logpdf(params, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sum); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_params); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_s); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 949, __pyx_L1_error) __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_13); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_InPlaceSubtract(__pyx_v_minus_logp, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_minus_logp, __pyx_t_6); __pyx_t_6 = 0;
0950:
0951: # add penalty for being negative
+0952: minus_logp += penalty*Nf
__pyx_t_6 = PyFloat_FromDouble(__pyx_v_penalty); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 952, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = PyNumber_Multiply(__pyx_t_6, __pyx_v_Nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 952, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_minus_logp, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 952, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_minus_logp, __pyx_t_6); __pyx_t_6 = 0;
0953:
+0954: return minus_logp
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_minus_logp); __pyx_r = __pyx_v_minus_logp; goto __pyx_L0;
0955:
+0956: def lin_mode_inits(self, coeff, contactMatrix):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_37lin_mode_inits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_37lin_mode_inits(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_coeff = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lin_mode_inits (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coeff,&__pyx_n_s_contactMatrix,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_coeff)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("lin_mode_inits", 1, 2, 2, 1); __PYX_ERR(0, 956, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "lin_mode_inits") < 0)) __PYX_ERR(0, 956, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_coeff = values[0];
__pyx_v_contactMatrix = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("lin_mode_inits", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 956, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.lin_mode_inits", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_36lin_mode_inits(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_coeff, __pyx_v_contactMatrix);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_36lin_mode_inits(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_coeff, PyObject *__pyx_v_contactMatrix) {
__Pyx_memviewslice __pyx_v_v = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lin_mode_inits", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("pyross.inference.SIR_type.lin_mode_inits", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_v, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+0957: cdef double [:] v, x0, fi=self.fi
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 957, __pyx_L1_error) __pyx_v_fi = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+0958: v = self.find_fastest_growing_lin_mode(0, contactMatrix)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->find_fastest_growing_lin_mode(__pyx_v_self, 0.0, __pyx_v_contactMatrix, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 958, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_v = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+0959: v = np.multiply(v, coeff)/np.linalg.norm(v, ord=1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_multiply); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_v, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_v_coeff}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_v_coeff}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_INCREF(__pyx_v_coeff); __Pyx_GIVEREF(__pyx_v_coeff); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_coeff); __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_linalg); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_norm); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_v, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_ord, __pyx_int_1) < 0) __PYX_ERR(0, 959, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 959, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_v, 1); __pyx_v_v = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+0960: x0 = np.zeros((self.dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 960, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_x0 = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+0961: x0[:self.M] = fi
__pyx_t_1.data = __pyx_v_x0.data;
__pyx_t_1.memview = __pyx_v_x0.memview;
__PYX_INC_MEMVIEW(&__pyx_t_1, 0);
__pyx_t_6 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_1,
__pyx_v_x0.shape[0], __pyx_v_x0.strides[0], __pyx_v_x0.suboffsets[0],
0,
0,
&__pyx_t_6,
0,
__pyx_v_self->M,
0,
0,
1,
0,
1) < 0))
{
__PYX_ERR(0, 961, __pyx_L1_error)
}
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_fi, __pyx_t_1, 1, 1, 0) < 0)) __PYX_ERR(0, 961, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__pyx_t_1.memview = NULL;
__pyx_t_1.data = NULL;
+0962: return np.add(x0, v)
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_v, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_5}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_7, __pyx_t_5}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_t_5); __pyx_t_7 = 0; __pyx_t_5 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
0963:
+0964: def latent_infer_parameters_lin_mode_init(self, param_keys, np.ndarray guess, np.ndarray stds,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_39latent_infer_parameters_lin_mode_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_39latent_infer_parameters_lin_mode_init(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_keys = 0;
PyArrayObject *__pyx_v_guess = 0;
PyArrayObject *__pyx_v_stds = 0;
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_contactMatrix = 0;
PyArrayObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_full_output = 0;
double __pyx_v_ftol;
PyObject *__pyx_v_global_max_iter = 0;
PyObject *__pyx_v_local_max_iter = 0;
PyObject *__pyx_v_global_atol = 0;
PyObject *__pyx_v_enable_global = 0;
PyObject *__pyx_v_enable_local = 0;
PyObject *__pyx_v_cma_processes = 0;
PyObject *__pyx_v_cma_population = 0;
PyObject *__pyx_v_cma_stds = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_parameters_lin_mode_init (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_keys,&__pyx_n_s_guess,&__pyx_n_s_stds,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_bounds,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_verbose,&__pyx_n_s_full_output,&__pyx_n_s_ftol,&__pyx_n_s_global_max_iter,&__pyx_n_s_local_max_iter,&__pyx_n_s_global_atol,&__pyx_n_s_enable_global,&__pyx_n_s_enable_local,&__pyx_n_s_cma_processes,&__pyx_n_s_cma_population,&__pyx_n_s_cma_stds,0};
PyObject* values[22] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_38latent_infer_parameters_lin_mode_init(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_param_keys, PyArrayObject *__pyx_v_guess, PyArrayObject *__pyx_v_stds, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyArrayObject *__pyx_v_bounds, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_verbose, PyObject *__pyx_v_full_output, double __pyx_v_ftol, PyObject *__pyx_v_global_max_iter, PyObject *__pyx_v_local_max_iter, PyObject *__pyx_v_global_atol, PyObject *__pyx_v_enable_global, PyObject *__pyx_v_enable_local, PyObject *__pyx_v_cma_processes, PyObject *__pyx_v_cma_population, PyObject *__pyx_v_cma_stds) {
Py_ssize_t __pyx_v_param_dim;
PyObject *__pyx_v_flat_param_guess = NULL;
PyObject *__pyx_v_flat_param_stds = NULL;
PyObject *__pyx_v_flat_param_bounds = NULL;
PyObject *__pyx_v_flat_param_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_param_guesses = NULL;
PyObject *__pyx_v_init_guess = NULL;
PyObject *__pyx_v_init_stds = NULL;
PyObject *__pyx_v_init_bounds = NULL;
PyObject *__pyx_v_flat_guess = NULL;
PyObject *__pyx_v_flat_stds = NULL;
PyObject *__pyx_v_flat_bounds = NULL;
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_scale = NULL;
PyObject *__pyx_v_flat_cma_stds = NULL;
PyObject *__pyx_v_flat_cma_stds_params = NULL;
PyObject *__pyx_v_cma_stds_init = NULL;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_minimize_args = NULL;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_v_estimates = NULL;
PyObject *__pyx_v_flat_param_estimates = NULL;
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_parameters_lin_mode_init", 0);
__Pyx_INCREF((PyObject *)__pyx_v_obs);
__Pyx_INCREF((PyObject *)__pyx_v_fltr);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_parameters_lin_mode_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_flat_param_guess);
__Pyx_XDECREF(__pyx_v_flat_param_stds);
__Pyx_XDECREF(__pyx_v_flat_param_bounds);
__Pyx_XDECREF(__pyx_v_flat_param_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_param_guesses);
__Pyx_XDECREF(__pyx_v_init_guess);
__Pyx_XDECREF(__pyx_v_init_stds);
__Pyx_XDECREF(__pyx_v_init_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess);
__Pyx_XDECREF(__pyx_v_flat_stds);
__Pyx_XDECREF(__pyx_v_flat_bounds);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_flat_cma_stds);
__Pyx_XDECREF(__pyx_v_flat_cma_stds_params);
__Pyx_XDECREF(__pyx_v_cma_stds_init);
__Pyx_XDECREF(__pyx_v_minimize_args);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XDECREF(__pyx_v_estimates);
__Pyx_XDECREF(__pyx_v_flat_param_estimates);
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF((PyObject *)__pyx_v_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
0965: np.ndarray obs, np.ndarray fltr,
0966: double Tf, Py_ssize_t Nf, contactMatrix, np.ndarray bounds,
+0967: tangent=False, infer_scale_parameter=False,
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)Py_False);
+0968: verbose=False, full_output=False, double ftol=1e-5,
values[11] = ((PyObject *)Py_False);
values[12] = ((PyObject *)Py_False);
values[14] = ((PyObject *)__pyx_int_100);
values[15] = ((PyObject *)__pyx_int_100);
values[16] = ((PyObject *)__pyx_int_1);
0969: global_max_iter=100, local_max_iter=100, global_atol=1,
+0970: enable_global=True, enable_local=True, cma_processes=0,
values[17] = ((PyObject *)Py_True);
values[18] = ((PyObject *)Py_True);
values[19] = ((PyObject *)__pyx_int_0);
values[20] = ((PyObject *)__pyx_int_16);
+0971: cma_population=16, cma_stds=None):
values[21] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_guess)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters_lin_mode_init", 0, 9, 22, 1); __PYX_ERR(0, 964, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters_lin_mode_init", 0, 9, 22, 2); __PYX_ERR(0, 964, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters_lin_mode_init", 0, 9, 22, 3); __PYX_ERR(0, 964, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters_lin_mode_init", 0, 9, 22, 4); __PYX_ERR(0, 964, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters_lin_mode_init", 0, 9, 22, 5); __PYX_ERR(0, 964, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters_lin_mode_init", 0, 9, 22, 6); __PYX_ERR(0, 964, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters_lin_mode_init", 0, 9, 22, 7); __PYX_ERR(0, 964, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters_lin_mode_init", 0, 9, 22, 8); __PYX_ERR(0, 964, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_full_output);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ftol);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_max_iter);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_max_iter);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_atol);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_global);
if (value) { values[17] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 18:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_local);
if (value) { values[18] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 19:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_processes);
if (value) { values[19] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 20:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_population);
if (value) { values[20] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 21:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_stds);
if (value) { values[21] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_infer_parameters_lin_mode_init") < 0)) __PYX_ERR(0, 964, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_keys = values[0];
__pyx_v_guess = ((PyArrayObject *)values[1]);
__pyx_v_stds = ((PyArrayObject *)values[2]);
__pyx_v_obs = ((PyArrayObject *)values[3]);
__pyx_v_fltr = ((PyArrayObject *)values[4]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 966, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[6]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 966, __pyx_L3_error)
__pyx_v_contactMatrix = values[7];
__pyx_v_bounds = ((PyArrayObject *)values[8]);
__pyx_v_tangent = values[9];
__pyx_v_infer_scale_parameter = values[10];
__pyx_v_verbose = values[11];
__pyx_v_full_output = values[12];
if (values[13]) {
__pyx_v_ftol = __pyx_PyFloat_AsDouble(values[13]); if (unlikely((__pyx_v_ftol == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 968, __pyx_L3_error)
} else {
__pyx_v_ftol = ((double)1e-5);
}
__pyx_v_global_max_iter = values[14];
__pyx_v_local_max_iter = values[15];
__pyx_v_global_atol = values[16];
__pyx_v_enable_global = values[17];
__pyx_v_enable_local = values[18];
__pyx_v_cma_processes = values[19];
__pyx_v_cma_population = values[20];
__pyx_v_cma_stds = values[21];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer_parameters_lin_mode_init", 0, 9, 22, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 964, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_parameters_lin_mode_init", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_guess), __pyx_ptype_5numpy_ndarray, 1, "guess", 0))) __PYX_ERR(0, 964, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_stds), __pyx_ptype_5numpy_ndarray, 1, "stds", 0))) __PYX_ERR(0, 964, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 965, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 965, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bounds), __pyx_ptype_5numpy_ndarray, 1, "bounds", 0))) __PYX_ERR(0, 966, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_38latent_infer_parameters_lin_mode_init(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_param_keys, __pyx_v_guess, __pyx_v_stds, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_bounds, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_verbose, __pyx_v_full_output, __pyx_v_ftol, __pyx_v_global_max_iter, __pyx_v_local_max_iter, __pyx_v_global_atol, __pyx_v_enable_global, __pyx_v_enable_local, __pyx_v_cma_processes, __pyx_v_cma_population, __pyx_v_cma_stds);
0972: cdef:
+0973: Py_ssize_t param_dim = len(param_keys)
__pyx_t_1 = PyObject_Length(__pyx_v_param_keys); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 973, __pyx_L1_error) __pyx_v_param_dim = __pyx_t_1;
0974:
+0975: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_fltr), __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_fltr), __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 975, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
+0976: obs = pyross.utils.process_obs(obs[1:], Nf-1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_process_obs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_obs), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_t_4); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 976, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_obs, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
+0977: fltr = fltr[1:]
__pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_fltr), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 977, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 977, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
0978:
+0979: assert len(guess) == param_dim + 1, 'len(guess) must equal to total number of params + 1'
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_guess)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 979, __pyx_L1_error)
if (unlikely(!((__pyx_t_1 == (__pyx_v_param_dim + 1)) != 0))) {
PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_len_guess_must_equal_to_total_nu_2);
__PYX_ERR(0, 979, __pyx_L1_error)
}
}
#endif
0980:
0981: # Transfer the parameter parts of guess, stds, ... which can contain arrays as entries for age-dependent rates to a flat list
+0982: flat_param_guess, flat_param_stds, flat_param_bounds, flat_param_guess_range, is_scale_parameter, scaled_param_guesses \
__pyx_v_flat_param_guess = __pyx_t_3; __pyx_t_3 = 0; __pyx_v_flat_param_stds = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_flat_param_bounds = __pyx_t_7; __pyx_t_7 = 0; __pyx_v_flat_param_guess_range = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_is_scale_parameter = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_scaled_param_guesses = __pyx_t_5; __pyx_t_5 = 0;
+0983: = self._flatten_parameters(guess[:param_dim], stds[:param_dim], bounds[:param_dim], infer_scale_parameter)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_guess), 0, __pyx_v_param_dim, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_stds), 0, __pyx_v_param_dim, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_bounds), 0, __pyx_v_param_dim, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_8, __pyx_t_4, __pyx_t_7, __pyx_v_infer_scale_parameter}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 983, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_8, __pyx_t_4, __pyx_t_7, __pyx_v_infer_scale_parameter}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 983, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_9 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_6, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_6, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_6, __pyx_v_infer_scale_parameter); __pyx_t_8 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 982, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); __pyx_t_7 = PyList_GET_ITEM(sequence, 2); __pyx_t_4 = PyList_GET_ITEM(sequence, 3); __pyx_t_8 = PyList_GET_ITEM(sequence, 4); __pyx_t_5 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_3,&__pyx_t_9,&__pyx_t_7,&__pyx_t_4,&__pyx_t_8,&__pyx_t_5}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 982, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_3,&__pyx_t_9,&__pyx_t_7,&__pyx_t_4,&__pyx_t_8,&__pyx_t_5}; __pyx_t_10 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 6) < 0) __PYX_ERR(0, 982, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 982, __pyx_L1_error) __pyx_L4_unpacking_done:; }
0984:
0985: # Concatenate the flattend parameter guess with init guess
+0986: init_guess = guess[param_dim:]
__pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_guess), __pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_init_guess = __pyx_t_2; __pyx_t_2 = 0;
+0987: init_stds = stds[param_dim:]
__pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_stds), __pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_init_stds = __pyx_t_2; __pyx_t_2 = 0;
+0988: init_bounds = bounds[param_dim:]
__pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_bounds), __pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 988, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_init_bounds = __pyx_t_2; __pyx_t_2 = 0;
+0989: flat_guess = np.concatenate([flat_param_guess, init_guess]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyList_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_flat_param_guess); __Pyx_GIVEREF(__pyx_v_flat_param_guess); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_flat_param_guess); __Pyx_INCREF(__pyx_v_init_guess); __Pyx_GIVEREF(__pyx_v_init_guess); PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_init_guess); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_astype); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_8, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 989, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_flat_guess = __pyx_t_2; __pyx_t_2 = 0;
+0990: flat_stds = np.concatenate([flat_param_stds,init_stds]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_flat_param_stds); __Pyx_GIVEREF(__pyx_v_flat_param_stds); PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_flat_param_stds); __Pyx_INCREF(__pyx_v_init_stds); __Pyx_GIVEREF(__pyx_v_init_stds); PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_init_stds); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_astype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_flat_stds = __pyx_t_2; __pyx_t_2 = 0;
+0991: flat_bounds = np.concatenate([flat_param_bounds, init_bounds], axis=0).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyList_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_flat_param_bounds); __Pyx_GIVEREF(__pyx_v_flat_param_bounds); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_flat_param_bounds); __Pyx_INCREF(__pyx_v_init_bounds); __Pyx_GIVEREF(__pyx_v_init_bounds); PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_init_bounds); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 991, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_astype); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_5, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_flat_bounds = __pyx_t_2; __pyx_t_2 = 0;
0992:
+0993: s, scale = pyross.utils.make_log_norm_dist(flat_guess, flat_stds)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pyross); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_v_flat_guess); __Pyx_GIVEREF(__pyx_v_flat_guess); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_v_flat_guess); __Pyx_INCREF(__pyx_v_flat_stds); __Pyx_GIVEREF(__pyx_v_flat_stds); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_v_flat_stds); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 993, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_8 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_8 = __pyx_t_11(__pyx_t_7); if (unlikely(!__pyx_t_8)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); index = 1; __pyx_t_5 = __pyx_t_11(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_7), 2) < 0) __PYX_ERR(0, 993, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 993, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_v_s = __pyx_t_8; __pyx_t_8 = 0; __pyx_v_scale = __pyx_t_5; __pyx_t_5 = 0;
0994:
+0995: if cma_stds is None:
__pyx_t_12 = (__pyx_v_cma_stds == Py_None);
__pyx_t_13 = (__pyx_t_12 != 0);
if (__pyx_t_13) {
/* … */
goto __pyx_L7;
}
0996: # Use prior standard deviations here
+0997: flat_cma_stds = flat_stds
__Pyx_INCREF(__pyx_v_flat_stds);
__pyx_v_flat_cma_stds = __pyx_v_flat_stds;
0998: else:
+0999: flat_cma_stds_params = np.zeros(len(flat_param_guess))
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 999, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 999, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_1 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 999, __pyx_L1_error)
__pyx_t_5 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 999, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_8, function);
}
}
__pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_5);
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 999, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__pyx_v_flat_cma_stds_params = __pyx_t_2;
__pyx_t_2 = 0;
+1000: cma_stds_init = cma_stds[param_dim:]
__pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_cma_stds, __pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_cma_stds_init = __pyx_t_2; __pyx_t_2 = 0;
+1001: for i in range(param_dim):
__pyx_t_1 = __pyx_v_param_dim;
__pyx_t_14 = __pyx_t_1;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
+1002: flat_cma_stds_params[flat_param_guess_range[i]] = cma_stds[i]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_cma_stds, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_flat_param_guess_range, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1002, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (unlikely(PyObject_SetItem(__pyx_v_flat_cma_stds_params, __pyx_t_8, __pyx_t_2) < 0)) __PYX_ERR(0, 1002, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; }
+1003: flat_cma_stds = np.concatenate([flat_cma_stds_params, cma_stds_init])
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyList_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_flat_cma_stds_params); __Pyx_GIVEREF(__pyx_v_flat_cma_stds_params); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_flat_cma_stds_params); __Pyx_INCREF(__pyx_v_cma_stds_init); __Pyx_GIVEREF(__pyx_v_cma_stds_init); PyList_SET_ITEM(__pyx_t_8, 1, __pyx_v_cma_stds_init); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_flat_cma_stds = __pyx_t_2; __pyx_t_2 = 0; } __pyx_L7:;
1004:
+1005: minimize_args = {'param_keys':param_keys,
__pyx_t_2 = __Pyx_PyDict_NewPresized(13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_param_keys, __pyx_v_param_keys) < 0) __PYX_ERR(0, 1005, __pyx_L1_error)
+1006: 'is_scale_parameter':is_scale_parameter,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 1005, __pyx_L1_error)
+1007: 'scaled_guesses':scaled_param_guesses, 'flat_guess_range':flat_param_guess_range,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_scaled_guesses, __pyx_v_scaled_param_guesses) < 0) __PYX_ERR(0, 1005, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_flat_guess_range, __pyx_v_flat_param_guess_range) < 0) __PYX_ERR(0, 1005, __pyx_L1_error)
+1008: 'flat_param_guess_size':len(flat_param_guess),
__pyx_t_1 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1008, __pyx_L1_error) __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_flat_param_guess_size, __pyx_t_5) < 0) __PYX_ERR(0, 1005, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1009: 'obs':obs, 'fltr':fltr, 'Tf':Tf, 'Nf':Nf, 'contactMatrix':contactMatrix,
if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_obs, ((PyObject *)__pyx_v_obs)) < 0) __PYX_ERR(0, 1005, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_fltr, ((PyObject *)__pyx_v_fltr)) < 0) __PYX_ERR(0, 1005, __pyx_L1_error) __pyx_t_5 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_Tf, __pyx_t_5) < 0) __PYX_ERR(0, 1005, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_Nf, __pyx_t_5) < 0) __PYX_ERR(0, 1005, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 1005, __pyx_L1_error)
+1010: 's':s, 'scale':scale, 'tangent':tangent}
if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_s, __pyx_v_s) < 0) __PYX_ERR(0, 1005, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 1005, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_2, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 1005, __pyx_L1_error) __pyx_v_minimize_args = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
1011:
+1012: res = minimization(self._latent_lin_mode_init_to_minimize, flat_guess, flat_bounds, ftol=ftol,
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_minimization); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_lin_mode_init_to_minimiz); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __Pyx_INCREF(__pyx_v_flat_guess); __Pyx_GIVEREF(__pyx_v_flat_guess); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_flat_guess); __Pyx_INCREF(__pyx_v_flat_bounds); __Pyx_GIVEREF(__pyx_v_flat_bounds); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_flat_bounds); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_ftol); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_ftol, __pyx_t_7) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* … */ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_res = __pyx_t_7; __pyx_t_7 = 0;
+1013: global_max_iter=global_max_iter, local_max_iter=local_max_iter, global_atol=global_atol,
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_global_max_iter, __pyx_v_global_max_iter) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_local_max_iter, __pyx_v_local_max_iter) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_global_atol, __pyx_v_global_atol) < 0) __PYX_ERR(0, 1012, __pyx_L1_error)
+1014: enable_global=enable_global, enable_local=enable_local, cma_processes=cma_processes,
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_enable_global, __pyx_v_enable_global) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_enable_local, __pyx_v_enable_local) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cma_processes, __pyx_v_cma_processes) < 0) __PYX_ERR(0, 1012, __pyx_L1_error)
+1015: cma_population=cma_population, cma_stds=flat_cma_stds, verbose=verbose, args_dict=minimize_args)
if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cma_population, __pyx_v_cma_population) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_cma_stds, __pyx_v_flat_cma_stds) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 1012, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_args_dict, __pyx_v_minimize_args) < 0) __PYX_ERR(0, 1012, __pyx_L1_error)
1016:
+1017: estimates = res[0]
__pyx_t_7 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1017, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_estimates = __pyx_t_7; __pyx_t_7 = 0;
1018:
1019: # Get the parameters (in their original structure) from the flattened parameter vector.
+1020: flat_param_estimates = estimates[:len(flat_param_guess)]
__pyx_t_1 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1020, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_estimates, 0, __pyx_t_1, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1020, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_flat_param_estimates = __pyx_t_7; __pyx_t_7 = 0;
+1021: orig_params = self._unflatten_parameters(flat_param_estimates, flat_param_guess_range, is_scale_parameter,
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5);
+1022: scaled_param_guesses)
__pyx_t_8 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_flat_param_estimates, __pyx_v_flat_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1021, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[5] = {__pyx_t_8, __pyx_v_flat_param_estimates, __pyx_v_flat_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1021, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif { __pyx_t_2 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_v_flat_param_estimates); __Pyx_GIVEREF(__pyx_v_flat_param_estimates); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_v_flat_param_estimates); __Pyx_INCREF(__pyx_v_flat_param_guess_range); __Pyx_GIVEREF(__pyx_v_flat_param_guess_range); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_v_flat_param_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_6, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_param_guesses); __Pyx_GIVEREF(__pyx_v_scaled_param_guesses); PyTuple_SET_ITEM(__pyx_t_2, 3+__pyx_t_6, __pyx_v_scaled_param_guesses); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1021, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_orig_params = __pyx_t_7; __pyx_t_7 = 0;
+1023: orig_params = [*orig_params, *estimates[len(flat_param_guess):]]
__pyx_t_7 = PySequence_List(__pyx_v_orig_params); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1023, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_estimates, __pyx_t_1, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1023, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__Pyx_PyList_Extend(__pyx_t_7, __pyx_t_5) < 0) __PYX_ERR(0, 1023, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_orig_params, __pyx_t_7); __pyx_t_7 = 0;
1024:
+1025: if full_output:
__pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_full_output); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 1025, __pyx_L1_error) if (__pyx_t_13) { /* … */ }
+1026: return np.array(orig_params), res[1]
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_orig_params) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_orig_params); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2); __pyx_t_7 = 0; __pyx_t_2 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
1027: else:
+1028: return np.array(orig_params)
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1028, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1028, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
__pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_v_orig_params) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_orig_params);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1028, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_r = __pyx_t_5;
__pyx_t_5 = 0;
goto __pyx_L0;
}
1029:
+1030: def hessian_lin_mode(self, param_keys, maps, np.ndarray prior_mean, np.ndarray prior_stds,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_41hessian_lin_mode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_41hessian_lin_mode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_maps = 0;
PyArrayObject *__pyx_v_prior_mean = 0;
PyArrayObject *__pyx_v_prior_stds = 0;
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("hessian_lin_mode (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_keys,&__pyx_n_s_maps,&__pyx_n_s_prior_mean,&__pyx_n_s_prior_stds,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_eps,&__pyx_n_s_fd_method,0};
PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_40hessian_lin_mode(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_maps, PyArrayObject *__pyx_v_prior_mean, PyArrayObject *__pyx_v_prior_stds, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_eps, PyObject *__pyx_v_fd_method) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5_hessian_lin_mode *__pyx_cur_scope;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_maps = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_flat_prior_mean = NULL;
PyObject *__pyx_v_flat_prior_stds = NULL;
PyObject *__pyx_v_minuslogP = 0;
PyObject *__pyx_v_hess = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("hessian_lin_mode", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5_hessian_lin_mode *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_5_hessian_lin_mode(__pyx_ptype_6pyross_9inference___pyx_scope_struct_5_hessian_lin_mode, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5_hessian_lin_mode *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 1030, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_param_keys = __pyx_v_param_keys;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
__pyx_cur_scope->__pyx_v_obs = __pyx_v_obs;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_obs);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_obs);
__pyx_cur_scope->__pyx_v_fltr = __pyx_v_fltr;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_fltr);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_fltr);
__pyx_cur_scope->__pyx_v_Tf = __pyx_v_Tf;
__pyx_cur_scope->__pyx_v_Nf = __pyx_v_Nf;
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_cur_scope->__pyx_v_tangent = __pyx_v_tangent;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_tangent);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tangent);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_AddTraceback("pyross.inference.SIR_type.hessian_lin_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_maps);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_flat_prior_mean);
__Pyx_XDECREF(__pyx_v_flat_prior_stds);
__Pyx_XDECREF(__pyx_v_minuslogP);
__Pyx_XDECREF(__pyx_v_hess);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5_hessian_lin_mode {
PyObject_HEAD
Py_ssize_t __pyx_v_Nf;
double __pyx_v_Tf;
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_flat_maps_range;
PyArrayObject *__pyx_v_fltr;
PyObject *__pyx_v_is_scale_parameter;
PyArrayObject *__pyx_v_obs;
Py_ssize_t __pyx_v_param_dim;
PyObject *__pyx_v_param_keys;
PyObject *__pyx_v_s;
PyObject *__pyx_v_scale;
PyObject *__pyx_v_scaled_maps;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_tangent;
};
1031: np.ndarray obs, np.ndarray fltr,
1032: double Tf, Py_ssize_t Nf, contactMatrix,
+1033: tangent=False, infer_scale_parameter=False,
values[9] = ((PyObject *)Py_False);
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)__pyx_float_1eneg_3);
values[12] = ((PyObject *)__pyx_n_u_central);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian_lin_mode", 0, 9, 13, 1); __PYX_ERR(0, 1030, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_mean)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian_lin_mode", 0, 9, 13, 2); __PYX_ERR(0, 1030, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian_lin_mode", 0, 9, 13, 3); __PYX_ERR(0, 1030, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian_lin_mode", 0, 9, 13, 4); __PYX_ERR(0, 1030, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian_lin_mode", 0, 9, 13, 5); __PYX_ERR(0, 1030, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian_lin_mode", 0, 9, 13, 6); __PYX_ERR(0, 1030, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian_lin_mode", 0, 9, 13, 7); __PYX_ERR(0, 1030, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("hessian_lin_mode", 0, 9, 13, 8); __PYX_ERR(0, 1030, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[12] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "hessian_lin_mode") < 0)) __PYX_ERR(0, 1030, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_keys = values[0];
__pyx_v_maps = values[1];
__pyx_v_prior_mean = ((PyArrayObject *)values[2]);
__pyx_v_prior_stds = ((PyArrayObject *)values[3]);
__pyx_v_obs = ((PyArrayObject *)values[4]);
__pyx_v_fltr = ((PyArrayObject *)values[5]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[6]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1032, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[7]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1032, __pyx_L3_error)
__pyx_v_contactMatrix = values[8];
__pyx_v_tangent = values[9];
__pyx_v_infer_scale_parameter = values[10];
__pyx_v_eps = values[11];
__pyx_v_fd_method = values[12];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("hessian_lin_mode", 0, 9, 13, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1030, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.hessian_lin_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_prior_mean), __pyx_ptype_5numpy_ndarray, 1, "prior_mean", 0))) __PYX_ERR(0, 1030, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_prior_stds), __pyx_ptype_5numpy_ndarray, 1, "prior_stds", 0))) __PYX_ERR(0, 1030, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 1031, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 1031, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_40hessian_lin_mode(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_param_keys, __pyx_v_maps, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_eps, __pyx_v_fd_method);
1034: eps=1e-3, fd_method='central'):
1035: cdef:
+1036: Py_ssize_t param_dim = len(param_keys)
__pyx_t_1 = __pyx_cur_scope->__pyx_v_param_keys; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1036, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_cur_scope->__pyx_v_param_dim = __pyx_t_2;
1037:
+1038: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_Nf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_fltr), __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1038, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_fltr), __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1038, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_fltr)); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1038, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1038, __pyx_L1_error) __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_fltr)); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_fltr, ((PyArrayObject *)__pyx_t_1)); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
+1039: obs = pyross.utils.process_obs(obs[1:], Nf-1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_process_obs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_cur_scope->__pyx_v_obs), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t((__pyx_cur_scope->__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_t_4); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1039, __pyx_L1_error) __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_obs)); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_obs, ((PyArrayObject *)__pyx_t_1)); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
+1040: fltr = fltr[1:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_cur_scope->__pyx_v_fltr), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1040, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1040, __pyx_L1_error) __Pyx_GOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_fltr)); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_fltr, ((PyArrayObject *)__pyx_t_1)); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
1041:
+1042: bounds = np.zeros((len(maps), 2)) # This does not matter here
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = PyObject_Length(__pyx_v_maps); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1042, __pyx_L1_error) __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_2); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1042, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
+1043: flat_maps, _, _, flat_maps_range, is_scale_parameter, scaled_maps \
__pyx_v_flat_maps = __pyx_t_8; __pyx_t_8 = 0; __pyx_v__ = __pyx_t_3; __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_4); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_7); __pyx_cur_scope->__pyx_v_flat_maps_range = __pyx_t_7; __pyx_t_7 = 0; __Pyx_GIVEREF(__pyx_t_5); __pyx_cur_scope->__pyx_v_is_scale_parameter = __pyx_t_5; __pyx_t_5 = 0; __Pyx_GIVEREF(__pyx_t_9); __pyx_cur_scope->__pyx_v_scaled_maps = __pyx_t_9; __pyx_t_9 = 0;
+1044: = self._flatten_parameters(maps, prior_stds, bounds, infer_scale_parameter)
__pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_maps, ((PyObject *)__pyx_v_prior_stds), __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_maps, ((PyObject *)__pyx_v_prior_stds), __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_v_maps); __Pyx_INCREF(((PyObject *)__pyx_v_prior_stds)); __Pyx_GIVEREF(((PyObject *)__pyx_v_prior_stds)); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, ((PyObject *)__pyx_v_prior_stds)); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_6, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1044, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1043, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_8 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_4 = PyList_GET_ITEM(sequence, 2); __pyx_t_7 = PyList_GET_ITEM(sequence, 3); __pyx_t_5 = PyList_GET_ITEM(sequence, 4); __pyx_t_9 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_9); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_8,&__pyx_t_3,&__pyx_t_4,&__pyx_t_7,&__pyx_t_5,&__pyx_t_9}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1043, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_8,&__pyx_t_3,&__pyx_t_4,&__pyx_t_7,&__pyx_t_5,&__pyx_t_9}; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1043, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 6) < 0) __PYX_ERR(0, 1043, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1043, __pyx_L1_error) __pyx_L4_unpacking_done:; }
+1045: flat_prior_mean, flat_prior_stds, _, _, _, _ \
__pyx_v_flat_prior_mean = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_flat_prior_stds = __pyx_t_7; __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_8); __pyx_t_8 = 0;
+1046: = self._flatten_parameters(prior_mean, prior_stds, bounds, infer_scale_parameter)
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[5] = {__pyx_t_5, ((PyObject *)__pyx_v_prior_mean), ((PyObject *)__pyx_v_prior_stds), __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[5] = {__pyx_t_5, ((PyObject *)__pyx_v_prior_mean), ((PyObject *)__pyx_v_prior_stds), __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_prior_mean)); __Pyx_GIVEREF(((PyObject *)__pyx_v_prior_mean)); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_prior_mean)); __Pyx_INCREF(((PyObject *)__pyx_v_prior_stds)); __Pyx_GIVEREF(((PyObject *)__pyx_v_prior_stds)); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, ((PyObject *)__pyx_v_prior_stds)); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1046, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1045, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_9 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); __pyx_t_5 = PyList_GET_ITEM(sequence, 2); __pyx_t_4 = PyList_GET_ITEM(sequence, 3); __pyx_t_3 = PyList_GET_ITEM(sequence, 4); __pyx_t_8 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_9,&__pyx_t_7,&__pyx_t_5,&__pyx_t_4,&__pyx_t_3,&__pyx_t_8}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1045, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_9,&__pyx_t_7,&__pyx_t_5,&__pyx_t_4,&__pyx_t_3,&__pyx_t_8}; __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1045, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_11(__pyx_t_10); if (unlikely(!item)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 6) < 0) __PYX_ERR(0, 1045, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1045, __pyx_L1_error) __pyx_L6_unpacking_done:; }
1047:
+1048: s, scale = pyross.utils.make_log_norm_dist(flat_prior_mean, flat_prior_stds)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_pyross); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_flat_prior_mean); __Pyx_GIVEREF(__pyx_v_flat_prior_mean); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_v_flat_prior_mean); __Pyx_INCREF(__pyx_v_flat_prior_stds); __Pyx_GIVEREF(__pyx_v_flat_prior_stds); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_v_flat_prior_stds); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1048, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_8 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1048, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_8 = __pyx_t_11(__pyx_t_3); if (unlikely(!__pyx_t_8)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); index = 1; __pyx_t_4 = __pyx_t_11(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1048, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1048, __pyx_L1_error) __pyx_L8_unpacking_done:; } __Pyx_GIVEREF(__pyx_t_8); __pyx_cur_scope->__pyx_v_s = __pyx_t_8; __pyx_t_8 = 0; __Pyx_GIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_v_scale = __pyx_t_4; __pyx_t_4 = 0;
1049:
+1050: def minuslogP(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_16hessian_lin_mode_1minuslogP(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_16hessian_lin_mode_1minuslogP = {"minuslogP", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_16hessian_lin_mode_1minuslogP, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_16hessian_lin_mode_1minuslogP(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minuslogP (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_16hessian_lin_mode_minuslogP(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_16hessian_lin_mode_minuslogP(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5_hessian_lin_mode *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5_hessian_lin_mode *__pyx_outer_scope;
PyObject *__pyx_v_y_unflat = NULL;
PyObject *__pyx_v_coeff = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_minuslogp = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minuslogP", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_5_hessian_lin_mode *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.SIR_type.hessian_lin_mode.minuslogP", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_y_unflat);
__Pyx_XDECREF(__pyx_v_coeff);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_minuslogp);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__25 = PyTuple_Pack(7, __pyx_n_s_y, __pyx_n_s_y_unflat, __pyx_n_s_coeff, __pyx_n_s_parameters, __pyx_n_s_model, __pyx_n_s_x0, __pyx_n_s_minuslogp); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 1050, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__25);
__Pyx_GIVEREF(__pyx_tuple__25);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_16hessian_lin_mode_1minuslogP, 0, __pyx_n_s_hessian_lin_mode_locals_minuslog, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1050, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_minuslogP = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_minuslogP, 1050, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 1050, __pyx_L1_error)
+1051: y_unflat = self._unflatten_parameters(y, flat_maps_range, is_scale_parameter, scaled_maps)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1051, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1051, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_flat_maps_range)) { __Pyx_RaiseClosureNameError("flat_maps_range"); __PYX_ERR(0, 1051, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_is_scale_parameter)) { __Pyx_RaiseClosureNameError("is_scale_parameter"); __PYX_ERR(0, 1051, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_scaled_maps)) { __Pyx_RaiseClosureNameError("scaled_maps"); __PYX_ERR(0, 1051, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1051, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_y);
__Pyx_GIVEREF(__pyx_v_y);
PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_y);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_scaled_maps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_scaled_maps);
PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_scaled_maps);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1051, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_y_unflat = __pyx_t_1;
__pyx_t_1 = 0;
+1052: coeff = y_unflat[param_dim]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_y_unflat, __pyx_cur_scope->__pyx_v_param_dim, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1052, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_coeff = __pyx_t_1; __pyx_t_1 = 0;
+1053: parameters = self.fill_params_dict(param_keys, y_unflat)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1053, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_param_keys)) { __Pyx_RaiseClosureNameError("param_keys"); __PYX_ERR(0, 1053, __pyx_L1_error) }
__pyx_t_5 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1053, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1053, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__pyx_t_5) {
__Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_param_keys);
__Pyx_INCREF(__pyx_v_y_unflat);
__Pyx_GIVEREF(__pyx_v_y_unflat);
PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_y_unflat);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1053, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_parameters = __pyx_t_1;
__pyx_t_1 = 0;
+1054: self.set_params(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1054, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1054, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1054, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1055: model = self.make_det_model(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1055, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1055, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1055, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_model = __pyx_t_1;
__pyx_t_1 = 0;
+1056: x0 = self.lin_mode_inits(coeff, contactMatrix)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1056, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_lin_mode_inits); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1056, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 1056, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_coeff, __pyx_cur_scope->__pyx_v_contactMatrix};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1056, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_coeff, __pyx_cur_scope->__pyx_v_contactMatrix};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1056, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1056, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_coeff);
__Pyx_GIVEREF(__pyx_v_coeff);
PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_coeff);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1056, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_x0 = __pyx_t_1;
__pyx_t_1 = 0;
+1057: minuslogp = self.obtain_log_p_for_traj_matrix_fltr(x0, obs, fltr, Tf, Nf, model, contactMatrix, tangent)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1057, __pyx_L1_error) }
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 1057, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_obs)) { __Pyx_RaiseClosureNameError("obs"); __PYX_ERR(0, 1057, __pyx_L1_error) }
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_cur_scope->__pyx_v_obs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1057, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr)) { __Pyx_RaiseClosureNameError("fltr"); __PYX_ERR(0, 1057, __pyx_L1_error) }
__pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_fltr);
__Pyx_INCREF(__pyx_t_1);
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 1057, __pyx_L1_error) }
__pyx_t_2 = __pyx_cur_scope->__pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_tangent)) { __Pyx_RaiseClosureNameError("tangent"); __PYX_ERR(0, 1057, __pyx_L1_error) }
__pyx_t_5 = __pyx_cur_scope->__pyx_v_tangent;
__Pyx_INCREF(__pyx_t_5);
__pyx_t_9.__pyx_n = 1;
__pyx_t_9.tangent = __pyx_t_5;
__pyx_t_8 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_matrix_fltr(__pyx_cur_scope->__pyx_v_self, __pyx_t_6, __pyx_t_7, ((PyArrayObject *)__pyx_t_1), __pyx_cur_scope->__pyx_v_Tf, __pyx_cur_scope->__pyx_v_Nf, __pyx_v_model, __pyx_t_2, &__pyx_t_9);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1057, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_v_minuslogp = __pyx_t_5;
__pyx_t_5 = 0;
+1058: minuslogp -= np.sum(lognorm.logpdf(y, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_cur_scope->__pyx_v_s)) { __Pyx_RaiseClosureNameError("s"); __PYX_ERR(0, 1058, __pyx_L1_error) } __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_y); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_s); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_cur_scope->__pyx_v_s); __pyx_t_10 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (unlikely(!__pyx_cur_scope->__pyx_v_scale)) { __Pyx_RaiseClosureNameError("scale"); __PYX_ERR(0, 1058, __pyx_L1_error) } if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_scale, __pyx_cur_scope->__pyx_v_scale) < 0) __PYX_ERR(0, 1058, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_5 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_10, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_11); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_v_minuslogp, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1058, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF_SET(__pyx_v_minuslogp, __pyx_t_1); __pyx_t_1 = 0;
+1059: return minuslogp
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_minuslogp); __pyx_r = __pyx_v_minuslogp; goto __pyx_L0;
1060:
+1061: hess = pyross.utils.hessian_finite_difference(flat_maps, minuslogP, eps, method=fd_method)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_hessian_finite_difference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_flat_maps); __Pyx_GIVEREF(__pyx_v_flat_maps); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_flat_maps); __Pyx_INCREF(__pyx_v_minuslogP); __Pyx_GIVEREF(__pyx_v_minuslogP); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_minuslogP); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_eps); __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_method, __pyx_v_fd_method) < 0) __PYX_ERR(0, 1061, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1061, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_hess = __pyx_t_3; __pyx_t_3 = 0;
+1062: return hess
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_hess); __pyx_r = __pyx_v_hess; goto __pyx_L0;
1063:
+1064: def _nested_sampling_loglike_latent(self, params, param_keys=None, init_fltr=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_43_nested_sampling_loglike_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_43_nested_sampling_loglike_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_init_fltr = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_param_guesses = 0;
PyObject *__pyx_v_flat_param_guess_range = 0;
PyObject *__pyx_v_flat_param_guess_size = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_s = 0;
PyObject *__pyx_v_scale = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_fltr0 = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_nested_sampling_loglike_latent (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_param_keys,&__pyx_n_s_init_fltr,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_param_guesses,&__pyx_n_s_flat_param_guess_range,&__pyx_n_s_flat_param_guess_size,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_s,&__pyx_n_s_scale,&__pyx_n_s_obs0,&__pyx_n_s_fltr0,&__pyx_n_s_tangent,0};
PyObject* values[17] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_42_nested_sampling_loglike_latent(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_init_fltr, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_param_guesses, PyObject *__pyx_v_flat_param_guess_range, PyObject *__pyx_v_flat_param_guess_size, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_s, PyObject *__pyx_v_scale, PyObject *__pyx_v_obs0, PyObject *__pyx_v_fltr0, PyObject *__pyx_v_tangent) {
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_v_params_unflat = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_minus_logp = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_nested_sampling_loglike_latent", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type._nested_sampling_loglike_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_params_unflat);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_minus_logp);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1065: is_scale_parameter=None, scaled_param_guesses=None,
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
+1066: flat_param_guess_range=None, flat_param_guess_size=None,
values[5] = ((PyObject *)Py_None);
values[6] = ((PyObject *)Py_None);
+1067: obs=None, fltr=None, Tf=None, Nf=None, contactMatrix=None,
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
+1068: s=None, scale=None, obs0=None, fltr0=None, tangent=None):
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)Py_None);
values[16] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_param_guesses);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_param_guess_range);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_param_guess_size);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scale);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr0);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[16] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_nested_sampling_loglike_latent") < 0)) __PYX_ERR(0, 1064, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_param_keys = values[1];
__pyx_v_init_fltr = values[2];
__pyx_v_is_scale_parameter = values[3];
__pyx_v_scaled_param_guesses = values[4];
__pyx_v_flat_param_guess_range = values[5];
__pyx_v_flat_param_guess_size = values[6];
__pyx_v_obs = values[7];
__pyx_v_fltr = values[8];
__pyx_v_Tf = values[9];
__pyx_v_Nf = values[10];
__pyx_v_contactMatrix = values[11];
__pyx_v_s = values[12];
__pyx_v_scale = values[13];
__pyx_v_obs0 = values[14];
__pyx_v_fltr0 = values[15];
__pyx_v_tangent = values[16];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_nested_sampling_loglike_latent", 0, 1, 17, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1064, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._nested_sampling_loglike_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_42_nested_sampling_loglike_latent(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_param_keys, __pyx_v_init_fltr, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses, __pyx_v_flat_param_guess_range, __pyx_v_flat_param_guess_size, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_s, __pyx_v_scale, __pyx_v_obs0, __pyx_v_fltr0, __pyx_v_tangent);
1069: # Todo: replace this by latent_infer_parameters minimisation function.
+1070: inits = np.copy(params[flat_param_guess_size:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, &__pyx_v_flat_param_guess_size, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1070, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_inits = __pyx_t_1; __pyx_t_1 = 0;
1071:
1072: # Restore parameters from flattened parameters
+1073: params_unflat = self._unflatten_parameters(params[:flat_param_guess_size], flat_param_guess_range, is_scale_parameter,
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_params, 0, 0, NULL, &__pyx_v_flat_param_guess_size, NULL, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2);
+1074: scaled_param_guesses)
__pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_2, __pyx_v_flat_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_t_2, __pyx_v_flat_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_v_flat_param_guess_range); __Pyx_GIVEREF(__pyx_v_flat_param_guess_range); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_flat_param_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_param_guesses); __Pyx_GIVEREF(__pyx_v_scaled_param_guesses); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_scaled_param_guesses); __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1073, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_params_unflat = __pyx_t_1; __pyx_t_1 = 0;
1075:
+1076: parameters = self.fill_params_dict(param_keys, params_unflat)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_param_keys, __pyx_v_params_unflat}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_param_keys, __pyx_v_params_unflat}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_5, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_params_unflat); __Pyx_GIVEREF(__pyx_v_params_unflat); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_5, __pyx_v_params_unflat); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_parameters = __pyx_t_1; __pyx_t_1 = 0;
+1077: self.set_params(parameters)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1078: model = self.make_det_model(parameters)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_model = __pyx_t_1; __pyx_t_1 = 0;
1079:
+1080: x0 = self.fill_initial_conditions(inits, obs0, init_fltr, fltr0)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_initial_conditions); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1080, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_v_obs0, __pyx_v_init_fltr, __pyx_v_fltr0}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1080, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_v_obs0, __pyx_v_init_fltr, __pyx_v_fltr0}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1080, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1080, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_inits); __Pyx_GIVEREF(__pyx_v_inits); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_inits); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_obs0); __Pyx_INCREF(__pyx_v_init_fltr); __Pyx_GIVEREF(__pyx_v_init_fltr); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_init_fltr); __Pyx_INCREF(__pyx_v_fltr0); __Pyx_GIVEREF(__pyx_v_fltr0); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_fltr0); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1080, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_x0 = __pyx_t_1; __pyx_t_1 = 0;
1081:
+1082: minus_logp = self.obtain_log_p_for_traj_matrix_fltr(x0, obs, fltr, Tf, Nf, model, contactMatrix, tangent)
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1082, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_obs, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 1082, __pyx_L1_error) if (!(likely(((__pyx_v_fltr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fltr, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1082, __pyx_L1_error) __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1082, __pyx_L1_error) __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1082, __pyx_L1_error) __pyx_t_12.__pyx_n = 1; __pyx_t_12.tangent = __pyx_v_tangent; __pyx_t_11 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_matrix_fltr(__pyx_v_self, __pyx_t_7, __pyx_t_8, ((PyArrayObject *)__pyx_v_fltr), __pyx_t_9, __pyx_t_10, __pyx_v_model, __pyx_v_contactMatrix, &__pyx_t_12); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __pyx_t_1 = PyFloat_FromDouble(__pyx_t_11); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1082, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_minus_logp = __pyx_t_1; __pyx_t_1 = 0;
+1083: minus_logp -= np.sum(lognorm.logpdf(params, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_params); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_s); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 1083, __pyx_L1_error) __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_13); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_InPlaceSubtract(__pyx_v_minus_logp, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_minus_logp, __pyx_t_6); __pyx_t_6 = 0;
1084:
+1085: return -minus_logp
__Pyx_XDECREF(__pyx_r); __pyx_t_6 = PyNumber_Negative(__pyx_v_minus_logp); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1085, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
1086:
+1087: def nested_sampling_latent_inference(self, param_keys, np.ndarray init_fltr, np.ndarray guess, np.ndarray stds,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_45nested_sampling_latent_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_44nested_sampling_latent_inference[] = "Compute the log-evidence and weighted samples of the a-posteriori distribution of the parameters of a SIR type model\n with latent variables using nested sampling as implemented in the `nestle` Python package.\n\n This function provides a computational alterantive to `latent_infer_parameters`. It computes an estimate of the evidence and,\n in addition, returns a set of representative samples that can be used to compute a posterior mean estimate (insted of the MAP\n estimate). This approach approach is much more resource intensive and typically only viable for small models or tangent space inference.\n\n Parameters\n ----------\n param_keys: list\n A list of parameters to be inferred.\n init_fltr: boolean array\n True for initial conditions to be inferred.\n Shape = (nClass*M)\n Total number of True = total no. of variables - total no. of observed\n guess: numpy.array or list\n Prior expectation for the parameter values listed, and prior for initial conditions.\n Expect of length len(param_keys)+ (total no. of variables - total no. of observed).\n Age-dependent rates can be inferred by supplying a guess that is an array instead a single float.\n stds: numpy.array\n Standard deviations for the log normal prior.\n obs: 2d numpy.array\n The observed trajectories with reduced number of variables\n (number of data points, (age groups * observed model classes))\n fltr: 2d numpy.array\n A matrix of shape (no. observed variables, no. total variables),\n such that obs_{ti} = fltr_{ij} * X_{tj}\n Tf: float\n Total time of the trajectory\n Nf: int\n Total number of data points along the trajectory\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n bounds: np.array(l""en(guess), 2), optional\n Bound the prior within the values specified by this array. This can be used to avoid sampling the posterior\n in regions where the solution is numerically unstable (e.g. parameters close to 0). Any bound introduces\n a bias to the result, therefore one must make sure that the blocked regions are negligible.\n obs0: numpy.array, optional\n Observed initial condition, if more detailed than obs[0]\n fltr0: 2d numpy.array, optional\n Matrix filter for obs0\n tangent: bool, optional\n Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.\n infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)\n Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter\n for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each\n age-dependent parameter individually\n verbose: bool, optional\n Set to True to see intermediate outputs from the nested sampling procedure.\n queue_size: int\n Size of the internal queue of samples of the nested sampling algorithm. The log-likelihood of these samples\n is computed in parallel (if queue_size > 1).\n max_workers: int\n The maximal number of processes used to compute samples.\n npoints: int\n Argument of `nestle.sample`. The number of active points used in the nested sampling algorithm. The higher the\n number the more accurate and expensive is the evidence computation.\n method: str\n Nested sampling method used int `nestle.sample`, see their documentation. Default is `single`, for multimodel posteriors,\n use `multi`.\n max_iter: int\n Maximum number of iterations"" of the nested sampling algorithm.\n dlogz: float, optional\n Stopping threshold for the estimated error of the log-evidence. This option is mutually exclusive with `decline_factor`.\n decline_factor: float, optional\n Stop the iteration when the weight (likelihood times prior volume) of newly saved samples has been declining for\n `decline_factor * nsamples` consecutive samples. This option is mutually exclusive with `dlogz`.\n\n Returns\n -------\n log_evidence:\n The nested sampling estimate of the log-evidence.\n (samples, weights):\n A set of weighted samples approximating the posterios distribution.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_45nested_sampling_latent_inference(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_keys = 0;
PyArrayObject *__pyx_v_init_fltr = 0;
PyArrayObject *__pyx_v_guess = 0;
PyArrayObject *__pyx_v_stds = 0;
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_bounds = 0;
PyArrayObject *__pyx_v_obs0 = 0;
PyArrayObject *__pyx_v_fltr0 = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_verbose = 0;
PyObject *__pyx_v_queue_size = 0;
PyObject *__pyx_v_max_workers = 0;
PyObject *__pyx_v_npoints = 0;
PyObject *__pyx_v_method = 0;
PyObject *__pyx_v_max_iter = 0;
PyObject *__pyx_v_dlogz = 0;
PyObject *__pyx_v_decline_factor = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_latent_inference (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_keys,&__pyx_n_s_init_fltr,&__pyx_n_s_guess,&__pyx_n_s_stds,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_bounds,&__pyx_n_s_obs0,&__pyx_n_s_fltr0,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_verbose,&__pyx_n_s_queue_size,&__pyx_n_s_max_workers,&__pyx_n_s_npoints,&__pyx_n_s_method,&__pyx_n_s_max_iter,&__pyx_n_s_dlogz,&__pyx_n_s_decline_factor,0};
PyObject* values[22] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_44nested_sampling_latent_inference(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_param_keys, PyArrayObject *__pyx_v_init_fltr, PyArrayObject *__pyx_v_guess, PyArrayObject *__pyx_v_stds, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_bounds, PyArrayObject *__pyx_v_obs0, PyArrayObject *__pyx_v_fltr0, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_verbose, PyObject *__pyx_v_queue_size, PyObject *__pyx_v_max_workers, PyObject *__pyx_v_npoints, PyObject *__pyx_v_method, PyObject *__pyx_v_max_iter, PyObject *__pyx_v_dlogz, PyObject *__pyx_v_decline_factor) {
PyObject *__pyx_v_param_dim = NULL;
int __pyx_v_enable_bounds;
PyObject *__pyx_v_flat_param_guess = NULL;
PyObject *__pyx_v_flat_param_stds = NULL;
PyObject *__pyx_v_flat_param_bounds = NULL;
PyObject *__pyx_v_flat_param_guess_range = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_scaled_param_guesses = NULL;
Py_ssize_t __pyx_v_flat_param_guess_size;
PyObject *__pyx_v_init_guess = NULL;
PyObject *__pyx_v_init_stds = NULL;
PyObject *__pyx_v_init_bounds = NULL;
PyObject *__pyx_v_flat_guess = NULL;
PyObject *__pyx_v_flat_stds = NULL;
PyObject *__pyx_v_flat_bounds = NULL;
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_scale = NULL;
Py_ssize_t __pyx_v_k;
PyObject *__pyx_v_ppf_bounds = NULL;
PyObject *__pyx_v_prior_transform_args = NULL;
PyObject *__pyx_v_loglike_args = NULL;
PyObject *__pyx_v_result = NULL;
PyObject *__pyx_v_log_evidence = NULL;
PyObject *__pyx_v_unflattened_samples = NULL;
PyObject *__pyx_v_sample = NULL;
PyObject *__pyx_v_sample_unflat = NULL;
PyObject *__pyx_v_weighted_samples = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("nested_sampling_latent_inference", 0);
__Pyx_INCREF((PyObject *)__pyx_v_obs);
__Pyx_INCREF((PyObject *)__pyx_v_fltr);
__Pyx_INCREF(__pyx_v_bounds);
__Pyx_INCREF((PyObject *)__pyx_v_obs0);
__Pyx_INCREF((PyObject *)__pyx_v_fltr0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_latent_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_param_dim);
__Pyx_XDECREF(__pyx_v_flat_param_guess);
__Pyx_XDECREF(__pyx_v_flat_param_stds);
__Pyx_XDECREF(__pyx_v_flat_param_bounds);
__Pyx_XDECREF(__pyx_v_flat_param_guess_range);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_scaled_param_guesses);
__Pyx_XDECREF(__pyx_v_init_guess);
__Pyx_XDECREF(__pyx_v_init_stds);
__Pyx_XDECREF(__pyx_v_init_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess);
__Pyx_XDECREF(__pyx_v_flat_stds);
__Pyx_XDECREF(__pyx_v_flat_bounds);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_ppf_bounds);
__Pyx_XDECREF(__pyx_v_prior_transform_args);
__Pyx_XDECREF(__pyx_v_loglike_args);
__Pyx_XDECREF(__pyx_v_result);
__Pyx_XDECREF(__pyx_v_log_evidence);
__Pyx_XDECREF(__pyx_v_unflattened_samples);
__Pyx_XDECREF(__pyx_v_sample);
__Pyx_XDECREF(__pyx_v_sample_unflat);
__Pyx_XDECREF(__pyx_v_weighted_samples);
__Pyx_XDECREF((PyObject *)__pyx_v_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr);
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF((PyObject *)__pyx_v_obs0);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr0);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1088: np.ndarray obs, np.ndarray fltr, double Tf, Py_ssize_t Nf, contactMatrix,
+1089: bounds=None, np.ndarray obs0=None, np.ndarray fltr0=None, tangent=False,
values[9] = ((PyObject *)Py_None);
values[10] = (PyObject *)((PyArrayObject *)Py_None);
values[11] = (PyObject *)((PyArrayObject *)Py_None);
values[12] = ((PyObject *)Py_False);
+1090: infer_scale_parameter=False, verbose=False, queue_size=1, max_workers=None,
values[13] = ((PyObject *)Py_False);
values[14] = ((PyObject *)Py_False);
values[15] = ((PyObject *)__pyx_int_1);
values[16] = ((PyObject *)Py_None);
values[17] = ((PyObject *)__pyx_int_100);
values[18] = ((PyObject *)__pyx_n_u_single);
values[19] = ((PyObject *)__pyx_int_1000);
+1091: npoints=100, method='single', max_iter=1000, dlogz=None, decline_factor=None):
values[20] = ((PyObject *)Py_None);
values[21] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 9, 22, 1); __PYX_ERR(0, 1087, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_guess)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 9, 22, 2); __PYX_ERR(0, 1087, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 9, 22, 3); __PYX_ERR(0, 1087, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 9, 22, 4); __PYX_ERR(0, 1087, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 9, 22, 5); __PYX_ERR(0, 1087, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 9, 22, 6); __PYX_ERR(0, 1087, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 9, 22, 7); __PYX_ERR(0, 1087, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 9, 22, 8); __PYX_ERR(0, 1087, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr0);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_queue_size);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_workers);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_npoints);
if (value) { values[17] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 18:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method);
if (value) { values[18] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 19:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_max_iter);
if (value) { values[19] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 20:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_dlogz);
if (value) { values[20] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 21:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_decline_factor);
if (value) { values[21] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "nested_sampling_latent_inference") < 0)) __PYX_ERR(0, 1087, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_keys = values[0];
__pyx_v_init_fltr = ((PyArrayObject *)values[1]);
__pyx_v_guess = ((PyArrayObject *)values[2]);
__pyx_v_stds = ((PyArrayObject *)values[3]);
__pyx_v_obs = ((PyArrayObject *)values[4]);
__pyx_v_fltr = ((PyArrayObject *)values[5]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[6]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1088, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[7]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1088, __pyx_L3_error)
__pyx_v_contactMatrix = values[8];
__pyx_v_bounds = values[9];
__pyx_v_obs0 = ((PyArrayObject *)values[10]);
__pyx_v_fltr0 = ((PyArrayObject *)values[11]);
__pyx_v_tangent = values[12];
__pyx_v_infer_scale_parameter = values[13];
__pyx_v_verbose = values[14];
__pyx_v_queue_size = values[15];
__pyx_v_max_workers = values[16];
__pyx_v_npoints = values[17];
__pyx_v_method = values[18];
__pyx_v_max_iter = values[19];
__pyx_v_dlogz = values[20];
__pyx_v_decline_factor = values[21];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("nested_sampling_latent_inference", 0, 9, 22, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1087, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.nested_sampling_latent_inference", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_init_fltr), __pyx_ptype_5numpy_ndarray, 1, "init_fltr", 0))) __PYX_ERR(0, 1087, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_guess), __pyx_ptype_5numpy_ndarray, 1, "guess", 0))) __PYX_ERR(0, 1087, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_stds), __pyx_ptype_5numpy_ndarray, 1, "stds", 0))) __PYX_ERR(0, 1087, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 1088, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 1088, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs0), __pyx_ptype_5numpy_ndarray, 1, "obs0", 0))) __PYX_ERR(0, 1089, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr0), __pyx_ptype_5numpy_ndarray, 1, "fltr0", 0))) __PYX_ERR(0, 1089, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_44nested_sampling_latent_inference(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_param_keys, __pyx_v_init_fltr, __pyx_v_guess, __pyx_v_stds, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_bounds, __pyx_v_obs0, __pyx_v_fltr0, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_verbose, __pyx_v_queue_size, __pyx_v_max_workers, __pyx_v_npoints, __pyx_v_method, __pyx_v_max_iter, __pyx_v_dlogz, __pyx_v_decline_factor);
1092: '''Compute the log-evidence and weighted samples of the a-posteriori distribution of the parameters of a SIR type model
1093: with latent variables using nested sampling as implemented in the `nestle` Python package.
1094:
1095: This function provides a computational alterantive to `latent_infer_parameters`. It computes an estimate of the evidence and,
1096: in addition, returns a set of representative samples that can be used to compute a posterior mean estimate (insted of the MAP
1097: estimate). This approach approach is much more resource intensive and typically only viable for small models or tangent space inference.
1098:
1099: Parameters
1100: ----------
1101: param_keys: list
1102: A list of parameters to be inferred.
1103: init_fltr: boolean array
1104: True for initial conditions to be inferred.
1105: Shape = (nClass*M)
1106: Total number of True = total no. of variables - total no. of observed
1107: guess: numpy.array or list
1108: Prior expectation for the parameter values listed, and prior for initial conditions.
1109: Expect of length len(param_keys)+ (total no. of variables - total no. of observed).
1110: Age-dependent rates can be inferred by supplying a guess that is an array instead a single float.
1111: stds: numpy.array
1112: Standard deviations for the log normal prior.
1113: obs: 2d numpy.array
1114: The observed trajectories with reduced number of variables
1115: (number of data points, (age groups * observed model classes))
1116: fltr: 2d numpy.array
1117: A matrix of shape (no. observed variables, no. total variables),
1118: such that obs_{ti} = fltr_{ij} * X_{tj}
1119: Tf: float
1120: Total time of the trajectory
1121: Nf: int
1122: Total number of data points along the trajectory
1123: contactMatrix: callable
1124: A function that returns the contact matrix at time t (input).
1125: bounds: np.array(len(guess), 2), optional
1126: Bound the prior within the values specified by this array. This can be used to avoid sampling the posterior
1127: in regions where the solution is numerically unstable (e.g. parameters close to 0). Any bound introduces
1128: a bias to the result, therefore one must make sure that the blocked regions are negligible.
1129: obs0: numpy.array, optional
1130: Observed initial condition, if more detailed than obs[0]
1131: fltr0: 2d numpy.array, optional
1132: Matrix filter for obs0
1133: tangent: bool, optional
1134: Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.
1135: infer_scale_parameter: bool or list of bools (size: number of age-dependenly specified parameters)
1136: Decide if age-dependent parameters are supposed to be inferred separately (default) or if a scale parameter
1137: for the guess should be inferred. This can be set either globally for all age-dependent parameters or for each
1138: age-dependent parameter individually
1139: verbose: bool, optional
1140: Set to True to see intermediate outputs from the nested sampling procedure.
1141: queue_size: int
1142: Size of the internal queue of samples of the nested sampling algorithm. The log-likelihood of these samples
1143: is computed in parallel (if queue_size > 1).
1144: max_workers: int
1145: The maximal number of processes used to compute samples.
1146: npoints: int
1147: Argument of `nestle.sample`. The number of active points used in the nested sampling algorithm. The higher the
1148: number the more accurate and expensive is the evidence computation.
1149: method: str
1150: Nested sampling method used int `nestle.sample`, see their documentation. Default is `single`, for multimodel posteriors,
1151: use `multi`.
1152: max_iter: int
1153: Maximum number of iterations of the nested sampling algorithm.
1154: dlogz: float, optional
1155: Stopping threshold for the estimated error of the log-evidence. This option is mutually exclusive with `decline_factor`.
1156: decline_factor: float, optional
1157: Stop the iteration when the weight (likelihood times prior volume) of newly saved samples has been declining for
1158: `decline_factor * nsamples` consecutive samples. This option is mutually exclusive with `dlogz`.
1159:
1160: Returns
1161: -------
1162: log_evidence:
1163: The nested sampling estimate of the log-evidence.
1164: (samples, weights):
1165: A set of weighted samples approximating the posterios distribution.
1166: '''
1167:
+1168: if nestle is None:
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_nestle); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = (__pyx_t_1 == Py_None); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+1169: raise Exception("Nested sampling needs optional dependency `nestle` which was not found.")
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 1169, __pyx_L1_error)
1170:
+1171: param_dim = len(param_keys)
__pyx_t_4 = PyObject_Length(__pyx_v_param_keys); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1171, __pyx_L1_error) __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_param_dim = __pyx_t_1; __pyx_t_1 = 0;
1172:
+1173: enable_bounds = True
__pyx_v_enable_bounds = 1;
+1174: if bounds is None:
__pyx_t_3 = (__pyx_v_bounds == Py_None);
__pyx_t_2 = (__pyx_t_3 != 0);
if (__pyx_t_2) {
/* … */
}
+1175: enable_bounds = False
__pyx_v_enable_bounds = 0;
+1176: bounds = np.zeros((len(guess), 2))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_guess)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1176, __pyx_L1_error) __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_2); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v_bounds, __pyx_t_1); __pyx_t_1 = 0;
1177:
+1178: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_fltr), __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_fltr), __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, ((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1178, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
1179:
+1180: if obs0 is None or fltr0 is None:
__pyx_t_3 = (((PyObject *)__pyx_v_obs0) == Py_None);
__pyx_t_10 = (__pyx_t_3 != 0);
if (!__pyx_t_10) {
} else {
__pyx_t_2 = __pyx_t_10;
goto __pyx_L6_bool_binop_done;
}
__pyx_t_10 = (((PyObject *)__pyx_v_fltr0) == Py_None);
__pyx_t_3 = (__pyx_t_10 != 0);
__pyx_t_2 = __pyx_t_3;
__pyx_L6_bool_binop_done:;
if (__pyx_t_2) {
/* … */
}
1181: # Use the same filter and observation for initial condition as for the rest of the trajectory, unless specified otherwise
+1182: obs0=obs[0]
__pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_obs), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1182, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_obs0, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
+1183: fltr0=fltr[0]
__pyx_t_1 = __Pyx_GetItemInt(((PyObject *)__pyx_v_fltr), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1183, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr0, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
+1184: obs = pyross.utils.process_obs(obs[1:], Nf-1)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_process_obs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_obs), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_9, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_9, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_11 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_8, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_8, __pyx_t_7); __pyx_t_9 = 0; __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1184, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_obs, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
+1185: fltr = fltr[1:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_fltr), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1185, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1185, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
1186:
+1187: assert int(np.sum(init_fltr)) == self.dim - fltr0.shape[0]
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sum); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) {
__pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
if (likely(__pyx_t_6)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
__Pyx_INCREF(__pyx_t_6);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_11, function);
}
}
__pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_6, ((PyObject *)__pyx_v_init_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_11, ((PyObject *)__pyx_v_init_fltr));
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyInt_FromSsize_t((__pyx_v_self->dim - (__pyx_v_fltr0->dimensions[0]))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1187, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_6 = PyObject_RichCompare(__pyx_t_11, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1187, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1187, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(!__pyx_t_2)) {
PyErr_SetNone(PyExc_AssertionError);
__PYX_ERR(0, 1187, __pyx_L1_error)
}
}
#endif
+1188: assert len(guess) == param_dim + int(np.sum(init_fltr)), 'len(guess) must equal to total number of params + inits to be inferred'
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__pyx_t_4 = PyObject_Length(((PyObject *)__pyx_v_guess)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1188, __pyx_L1_error)
__pyx_t_6 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_sum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
__pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
if (likely(__pyx_t_11)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
__Pyx_INCREF(__pyx_t_11);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_7, function);
}
}
__pyx_t_1 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_11, ((PyObject *)__pyx_v_init_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_7, ((PyObject *)__pyx_v_init_fltr));
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyNumber_Add(__pyx_v_param_dim, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1188, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1188, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
if (unlikely(!__pyx_t_2)) {
PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_len_guess_must_equal_to_total_nu);
__PYX_ERR(0, 1188, __pyx_L1_error)
}
}
#endif
1189:
1190: # Transfer the parameter parts of guess, stds, ... which can contain arrays as entries for age-dependent rates to a flat list
+1191: flat_param_guess, flat_param_stds, flat_param_bounds, flat_param_guess_range, is_scale_parameter, scaled_param_guesses \
__pyx_v_flat_param_guess = __pyx_t_1; __pyx_t_1 = 0; __pyx_v_flat_param_stds = __pyx_t_12; __pyx_t_12 = 0; __pyx_v_flat_param_bounds = __pyx_t_9; __pyx_t_9 = 0; __pyx_v_flat_param_guess_range = __pyx_t_11; __pyx_t_11 = 0; __pyx_v_is_scale_parameter = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_scaled_param_guesses = __pyx_t_5; __pyx_t_5 = 0;
+1192: = self._flatten_parameters(guess[:param_dim], stds[:param_dim], bounds[:param_dim], infer_scale_parameter)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_guess), 0, 0, NULL, &__pyx_v_param_dim, NULL, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_stds), 0, 0, NULL, &__pyx_v_param_dim, NULL, 0, 0, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_v_bounds, 0, 0, NULL, &__pyx_v_param_dim, NULL, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_6, __pyx_t_11, __pyx_t_9, __pyx_v_infer_scale_parameter}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[5] = {__pyx_t_5, __pyx_t_6, __pyx_t_11, __pyx_t_9, __pyx_v_infer_scale_parameter}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_12 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_8, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_8, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_8, __pyx_v_infer_scale_parameter); __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_9 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1191, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_12 = PyList_GET_ITEM(sequence, 1); __pyx_t_9 = PyList_GET_ITEM(sequence, 2); __pyx_t_11 = PyList_GET_ITEM(sequence, 3); __pyx_t_6 = PyList_GET_ITEM(sequence, 4); __pyx_t_5 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_1,&__pyx_t_12,&__pyx_t_9,&__pyx_t_11,&__pyx_t_6,&__pyx_t_5}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1191, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_1,&__pyx_t_12,&__pyx_t_9,&__pyx_t_11,&__pyx_t_6,&__pyx_t_5}; __pyx_t_13 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 6) < 0) __PYX_ERR(0, 1191, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1191, __pyx_L1_error) __pyx_L9_unpacking_done:; }
+1193: flat_param_guess_size = len(flat_param_guess)
__pyx_t_4 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1193, __pyx_L1_error) __pyx_v_flat_param_guess_size = __pyx_t_4;
1194:
1195: # Concatenate the flattend parameter guess with init guess
+1196: init_guess = guess[param_dim:]
__pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_guess), 0, 0, &__pyx_v_param_dim, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_init_guess = __pyx_t_7; __pyx_t_7 = 0;
+1197: init_stds = stds[param_dim:]
__pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_stds), 0, 0, &__pyx_v_param_dim, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_init_stds = __pyx_t_7; __pyx_t_7 = 0;
+1198: init_bounds = bounds[param_dim:]
__pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_bounds, 0, 0, &__pyx_v_param_dim, NULL, NULL, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_init_bounds = __pyx_t_7; __pyx_t_7 = 0;
+1199: flat_guess = np.concatenate([flat_param_guess, init_guess]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_flat_param_guess); __Pyx_GIVEREF(__pyx_v_flat_param_guess); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_flat_param_guess); __Pyx_INCREF(__pyx_v_init_guess); __Pyx_GIVEREF(__pyx_v_init_guess); PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_init_guess); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_9, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_6); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_astype); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_7 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_flat_guess = __pyx_t_7; __pyx_t_7 = 0;
+1200: flat_stds = np.concatenate([flat_param_stds,init_stds]).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_flat_param_stds); __Pyx_GIVEREF(__pyx_v_flat_param_stds); PyList_SET_ITEM(__pyx_t_5, 0, __pyx_v_flat_param_stds); __Pyx_INCREF(__pyx_v_init_stds); __Pyx_GIVEREF(__pyx_v_init_stds); PyList_SET_ITEM(__pyx_t_5, 1, __pyx_v_init_stds); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_11 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_9, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_astype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_11); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_flat_stds = __pyx_t_7; __pyx_t_7 = 0;
+1201: flat_bounds = np.concatenate([flat_param_bounds, init_bounds], axis=0).astype(DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyList_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_flat_param_bounds); __Pyx_GIVEREF(__pyx_v_flat_param_bounds); PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_flat_param_bounds); __Pyx_INCREF(__pyx_v_init_bounds); __Pyx_GIVEREF(__pyx_v_init_bounds); PyList_SET_ITEM(__pyx_t_6, 1, __pyx_v_init_bounds); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 1201, __pyx_L1_error) __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_astype); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_9); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_flat_bounds = __pyx_t_7; __pyx_t_7 = 0;
1202:
+1203: s, scale = pyross.utils.make_log_norm_dist(flat_guess, flat_stds)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_v_flat_guess, __pyx_v_flat_stds}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_INCREF(__pyx_v_flat_guess); __Pyx_GIVEREF(__pyx_v_flat_guess); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, __pyx_v_flat_guess); __Pyx_INCREF(__pyx_v_flat_stds); __Pyx_GIVEREF(__pyx_v_flat_stds); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_v_flat_stds); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1203, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_9)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_14(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_5 = __pyx_t_14(__pyx_t_9); if (unlikely(!__pyx_t_5)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_9), 2) < 0) __PYX_ERR(0, 1203, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1203, __pyx_L1_error) __pyx_L11_unpacking_done:; } __pyx_v_s = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_scale = __pyx_t_5; __pyx_t_5 = 0;
1204:
+1205: k = len(flat_guess)
__pyx_t_4 = PyObject_Length(__pyx_v_flat_guess); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1205, __pyx_L1_error) __pyx_v_k = __pyx_t_4;
+1206: ppf_bounds = np.zeros((k, 2))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_2); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_9); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_ppf_bounds = __pyx_t_7; __pyx_t_7 = 0;
+1207: if enable_bounds:
__pyx_t_2 = (__pyx_v_enable_bounds != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L12;
}
+1208: ppf_bounds[:,0] = lognorm.cdf(flat_bounds[:,0], s, scale=scale)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_cdf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_flat_bounds, __pyx_tuple__3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_s); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 1208, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(PyObject_SetItem(__pyx_v_ppf_bounds, __pyx_tuple__3, __pyx_t_5) < 0)) __PYX_ERR(0, 1208, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1209: ppf_bounds[:,1] = lognorm.cdf(flat_bounds[:,1], s, scale=scale)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_cdf); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_flat_bounds, __pyx_tuple__4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_s); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 1209, __pyx_L1_error) __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_ppf_bounds, __pyx_tuple__4, __pyx_t_6) < 0)) __PYX_ERR(0, 1209, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1210: ppf_bounds[:,1] = ppf_bounds[:,1] - ppf_bounds[:,0]
__pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_ppf_bounds, __pyx_tuple__4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_ppf_bounds, __pyx_tuple__3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = PyNumber_Subtract(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_ppf_bounds, __pyx_tuple__4, __pyx_t_9) < 0)) __PYX_ERR(0, 1210, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
1211: else:
+1212: ppf_bounds[:,1] = 1.0
/*else*/ {
if (unlikely(PyObject_SetItem(__pyx_v_ppf_bounds, __pyx_tuple__4, __pyx_float_1_0) < 0)) __PYX_ERR(0, 1212, __pyx_L1_error)
}
__pyx_L12:;
1213:
+1214: prior_transform_args = {'s':s, 'scale':scale, 'ppf_bounds':ppf_bounds}
__pyx_t_9 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_s, __pyx_v_s) < 0) __PYX_ERR(0, 1214, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 1214, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_ppf_bounds, __pyx_v_ppf_bounds) < 0) __PYX_ERR(0, 1214, __pyx_L1_error) __pyx_v_prior_transform_args = ((PyObject*)__pyx_t_9); __pyx_t_9 = 0;
+1215: loglike_args = {'param_keys':param_keys, 'init_fltr':init_fltr, 'is_scale_parameter':is_scale_parameter,
__pyx_t_9 = __Pyx_PyDict_NewPresized(16); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_param_keys, __pyx_v_param_keys) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_init_fltr, ((PyObject *)__pyx_v_init_fltr)) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_is_scale_parameter, __pyx_v_is_scale_parameter) < 0) __PYX_ERR(0, 1215, __pyx_L1_error)
+1216: 'scaled_param_guesses':scaled_param_guesses, 'flat_param_guess_range':flat_param_guess_range,
if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_scaled_param_guesses, __pyx_v_scaled_param_guesses) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_flat_param_guess_range, __pyx_v_flat_param_guess_range) < 0) __PYX_ERR(0, 1215, __pyx_L1_error)
+1217: 'flat_param_guess_size':len(flat_param_guess), 'obs':obs, 'fltr':fltr, 'Tf':Tf, 'Nf':Nf,
__pyx_t_4 = PyObject_Length(__pyx_v_flat_param_guess); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1217, __pyx_L1_error) __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_flat_param_guess_size, __pyx_t_5) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_obs, ((PyObject *)__pyx_v_obs)) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_fltr, ((PyObject *)__pyx_v_fltr)) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) __pyx_t_5 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_Tf, __pyx_t_5) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_Nf, __pyx_t_5) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1218: 'contactMatrix':contactMatrix, 's':s, 'scale':scale, 'obs0':obs0, 'fltr0':fltr0, 'tangent':tangent}
if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_contactMatrix, __pyx_v_contactMatrix) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_s, __pyx_v_s) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_obs0, ((PyObject *)__pyx_v_obs0)) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_fltr0, ((PyObject *)__pyx_v_fltr0)) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_9, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 1215, __pyx_L1_error) __pyx_v_loglike_args = ((PyObject*)__pyx_t_9); __pyx_t_9 = 0;
1219:
+1220: result = nested_sampling(self._nested_sampling_loglike_latent, self._nested_sampling_prior_transform, k, queue_size,
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_nested_sampling); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nested_sampling_loglike_latent); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nested_sampling_prior_transform); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_k); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11);
1221: max_workers, verbose, method, npoints, max_iter, dlogz, decline_factor, loglike_args,
+1222: prior_transform_args)
__pyx_t_12 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[14] = {__pyx_t_12, __pyx_t_6, __pyx_t_7, __pyx_t_11, __pyx_v_queue_size, __pyx_v_max_workers, __pyx_v_verbose, __pyx_v_method, __pyx_v_npoints, __pyx_v_max_iter, __pyx_v_dlogz, __pyx_v_decline_factor, __pyx_v_loglike_args, __pyx_v_prior_transform_args}; __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 13+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1220, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[14] = {__pyx_t_12, __pyx_t_6, __pyx_t_7, __pyx_t_11, __pyx_v_queue_size, __pyx_v_max_workers, __pyx_v_verbose, __pyx_v_method, __pyx_v_npoints, __pyx_v_max_iter, __pyx_v_dlogz, __pyx_v_decline_factor, __pyx_v_loglike_args, __pyx_v_prior_transform_args}; __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 13+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1220, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_1 = PyTuple_New(13+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_12); __pyx_t_12 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_8, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_8, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_8, __pyx_t_11); __Pyx_INCREF(__pyx_v_queue_size); __Pyx_GIVEREF(__pyx_v_queue_size); PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_8, __pyx_v_queue_size); __Pyx_INCREF(__pyx_v_max_workers); __Pyx_GIVEREF(__pyx_v_max_workers); PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_8, __pyx_v_max_workers); __Pyx_INCREF(__pyx_v_verbose); __Pyx_GIVEREF(__pyx_v_verbose); PyTuple_SET_ITEM(__pyx_t_1, 5+__pyx_t_8, __pyx_v_verbose); __Pyx_INCREF(__pyx_v_method); __Pyx_GIVEREF(__pyx_v_method); PyTuple_SET_ITEM(__pyx_t_1, 6+__pyx_t_8, __pyx_v_method); __Pyx_INCREF(__pyx_v_npoints); __Pyx_GIVEREF(__pyx_v_npoints); PyTuple_SET_ITEM(__pyx_t_1, 7+__pyx_t_8, __pyx_v_npoints); __Pyx_INCREF(__pyx_v_max_iter); __Pyx_GIVEREF(__pyx_v_max_iter); PyTuple_SET_ITEM(__pyx_t_1, 8+__pyx_t_8, __pyx_v_max_iter); __Pyx_INCREF(__pyx_v_dlogz); __Pyx_GIVEREF(__pyx_v_dlogz); PyTuple_SET_ITEM(__pyx_t_1, 9+__pyx_t_8, __pyx_v_dlogz); __Pyx_INCREF(__pyx_v_decline_factor); __Pyx_GIVEREF(__pyx_v_decline_factor); PyTuple_SET_ITEM(__pyx_t_1, 10+__pyx_t_8, __pyx_v_decline_factor); __Pyx_INCREF(__pyx_v_loglike_args); __Pyx_GIVEREF(__pyx_v_loglike_args); PyTuple_SET_ITEM(__pyx_t_1, 11+__pyx_t_8, __pyx_v_loglike_args); __Pyx_INCREF(__pyx_v_prior_transform_args); __Pyx_GIVEREF(__pyx_v_prior_transform_args); PyTuple_SET_ITEM(__pyx_t_1, 12+__pyx_t_8, __pyx_v_prior_transform_args); __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_11 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_result = __pyx_t_9; __pyx_t_9 = 0;
1223:
+1224: log_evidence = result.logz
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_logz); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1224, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_v_log_evidence = __pyx_t_9; __pyx_t_9 = 0;
1225:
+1226: unflattened_samples = []
__pyx_t_9 = PyList_New(0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1226, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_v_unflattened_samples = ((PyObject*)__pyx_t_9); __pyx_t_9 = 0;
+1227: for sample in result.samples:
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_samples); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (likely(PyList_CheckExact(__pyx_t_9)) || PyTuple_CheckExact(__pyx_t_9)) { __pyx_t_5 = __pyx_t_9; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0; __pyx_t_15 = NULL; } else { __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_15 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1227, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; for (;;) { if (likely(!__pyx_t_15)) { if (likely(PyList_CheckExact(__pyx_t_5))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_9); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1227, __pyx_L1_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_9); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1227, __pyx_L1_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } } else { __pyx_t_9 = __pyx_t_15(__pyx_t_5); if (unlikely(!__pyx_t_9)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1227, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_9); } __Pyx_XDECREF_SET(__pyx_v_sample, __pyx_t_9); __pyx_t_9 = 0; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+1228: sample_unflat = self._unflatten_parameters(sample[:flat_param_guess_size], flat_param_guess_range, is_scale_parameter,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = __Pyx_PyObject_GetSlice(__pyx_v_sample, 0, __pyx_v_flat_param_guess_size, NULL, NULL, NULL, 0, 1, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1228, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11);
+1229: scaled_param_guesses)
__pyx_t_7 = NULL;
__pyx_t_8 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_1, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_1)) {
PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_t_11, __pyx_v_flat_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses};
__pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1228, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
PyObject *__pyx_temp[5] = {__pyx_t_7, __pyx_t_11, __pyx_v_flat_param_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_param_guesses};
__pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 4+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1228, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
} else
#endif
{
__pyx_t_6 = PyTuple_New(4+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1228, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (__pyx_t_7) {
__Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
}
__Pyx_GIVEREF(__pyx_t_11);
PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, __pyx_t_11);
__Pyx_INCREF(__pyx_v_flat_param_guess_range);
__Pyx_GIVEREF(__pyx_v_flat_param_guess_range);
PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_v_flat_param_guess_range);
__Pyx_INCREF(__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_8, __pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_v_scaled_param_guesses);
__Pyx_GIVEREF(__pyx_v_scaled_param_guesses);
PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_8, __pyx_v_scaled_param_guesses);
__pyx_t_11 = 0;
__pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1228, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_XDECREF_SET(__pyx_v_sample_unflat, __pyx_t_9);
__pyx_t_9 = 0;
+1230: sample_unflat = [*sample_unflat, *sample[flat_param_guess_size:]]
__pyx_t_9 = PySequence_List(__pyx_v_sample_unflat); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_sample, __pyx_v_flat_param_guess_size, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__Pyx_PyList_Extend(__pyx_t_9, __pyx_t_1) < 0) __PYX_ERR(0, 1230, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_sample_unflat, __pyx_t_9); __pyx_t_9 = 0;
+1231: unflattened_samples.append(np.array(sample))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_9 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_v_sample) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_sample); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_16 = __Pyx_PyList_Append(__pyx_v_unflattened_samples, __pyx_t_9); if (unlikely(__pyx_t_16 == ((int)-1))) __PYX_ERR(0, 1231, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+1232: weighted_samples = (unflattened_samples, result.weights)
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_n_s_weights); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_unflattened_samples); __Pyx_GIVEREF(__pyx_v_unflattened_samples); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_unflattened_samples); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_5); __pyx_t_5 = 0; __pyx_v_weighted_samples = ((PyObject*)__pyx_t_9); __pyx_t_9 = 0;
1233:
+1234: return log_evidence, weighted_samples
__Pyx_XDECREF(__pyx_r); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_log_evidence); __Pyx_GIVEREF(__pyx_v_log_evidence); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_log_evidence); __Pyx_INCREF(__pyx_v_weighted_samples); __Pyx_GIVEREF(__pyx_v_weighted_samples); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_weighted_samples); __pyx_r = __pyx_t_9; __pyx_t_9 = 0; goto __pyx_L0;
1235:
1236:
+1237: def _latent_infer_control_to_minimize(self, params, grad = 0, keys=None, bounds=None, generator=None, x0=None,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_47_latent_infer_control_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_46_latent_infer_control_to_minimize[] = "Objective function for minimization call in latent_infer_control.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_47_latent_infer_control_to_minimize(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
CYTHON_UNUSED PyObject *__pyx_v_grad = 0;
PyObject *__pyx_v_keys = 0;
CYTHON_UNUSED PyObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_generator = 0;
PyObject *__pyx_v_x0 = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_s = 0;
PyObject *__pyx_v_scale = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_infer_control_to_minimize (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_grad,&__pyx_n_s_keys,&__pyx_n_s_bounds,&__pyx_n_s_generator,&__pyx_n_s_x0,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_s,&__pyx_n_s_scale,0};
PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
values[1] = ((PyObject *)__pyx_int_0);
values[2] = ((PyObject *)Py_None);
values[3] = ((PyObject *)Py_None);
values[4] = ((PyObject *)Py_None);
values[5] = ((PyObject *)Py_None);
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_46_latent_infer_control_to_minimize(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, CYTHON_UNUSED PyObject *__pyx_v_grad, PyObject *__pyx_v_keys, CYTHON_UNUSED PyObject *__pyx_v_bounds, PyObject *__pyx_v_generator, PyObject *__pyx_v_x0, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_s, PyObject *__pyx_v_scale) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_kwargs = NULL;
PyObject *__pyx_v_contactMatrix = NULL;
PyObject *__pyx_v_minus_logp = NULL;
PyObject *__pyx_8genexpr1__pyx_v_i = NULL;
PyObject *__pyx_8genexpr1__pyx_v_k = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_latent_infer_control_to_minimize", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_infer_control_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_kwargs);
__Pyx_XDECREF(__pyx_v_contactMatrix);
__Pyx_XDECREF(__pyx_v_minus_logp);
__Pyx_XDECREF(__pyx_8genexpr1__pyx_v_i);
__Pyx_XDECREF(__pyx_8genexpr1__pyx_v_k);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1238: obs=None, fltr=None, Tf=None, Nf=None,
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
values[8] = ((PyObject *)Py_None);
values[9] = ((PyObject *)Py_None);
+1239: intervention_fun=None, tangent=None,
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_None);
+1240: s=None, scale=None):
values[12] = ((PyObject *)Py_None);
values[13] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_grad);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys);
if (value) { values[2] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 3:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds);
if (value) { values[3] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 4:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator);
if (value) { values[4] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf);
if (value) { values[8] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 9:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf);
if (value) { values[9] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_s);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scale);
if (value) { values[13] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_latent_infer_control_to_minimize") < 0)) __PYX_ERR(0, 1237, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
__pyx_v_grad = values[1];
__pyx_v_keys = values[2];
__pyx_v_bounds = values[3];
__pyx_v_generator = values[4];
__pyx_v_x0 = values[5];
__pyx_v_obs = values[6];
__pyx_v_fltr = values[7];
__pyx_v_Tf = values[8];
__pyx_v_Nf = values[9];
__pyx_v_intervention_fun = values[10];
__pyx_v_tangent = values[11];
__pyx_v_s = values[12];
__pyx_v_scale = values[13];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_latent_infer_control_to_minimize", 0, 1, 14, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1237, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._latent_infer_control_to_minimize", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_46_latent_infer_control_to_minimize(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_grad, __pyx_v_keys, __pyx_v_bounds, __pyx_v_generator, __pyx_v_x0, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_s, __pyx_v_scale);
1241: """Objective function for minimization call in latent_infer_control."""
+1242: parameters = self.make_params_dict()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_parameters = __pyx_t_1; __pyx_t_1 = 0;
+1243: model = self.make_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_model = __pyx_t_1; __pyx_t_1 = 0;
+1244: kwargs = {k:params[i] for (i, k) in enumerate(keys)}
{ /* enter inner scope */
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1244, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_int_0);
__pyx_t_2 = __pyx_int_0;
if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) {
__pyx_t_3 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
__pyx_t_5 = NULL;
} else {
__pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1244, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1244, __pyx_L5_error)
}
for (;;) {
if (likely(!__pyx_t_5)) {
if (likely(PyList_CheckExact(__pyx_t_3))) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1244, __pyx_L5_error)
#else
__pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1244, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
} else {
if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1244, __pyx_L5_error)
#else
__pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1244, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
#endif
}
} else {
__pyx_t_6 = __pyx_t_5(__pyx_t_3);
if (unlikely(!__pyx_t_6)) {
PyObject* exc_type = PyErr_Occurred();
if (exc_type) {
if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
else __PYX_ERR(0, 1244, __pyx_L5_error)
}
break;
}
__Pyx_GOTREF(__pyx_t_6);
}
__Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_k, __pyx_t_6);
__pyx_t_6 = 0;
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_i, __pyx_t_2);
__pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1244, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2);
__pyx_t_2 = __pyx_t_6;
__pyx_t_6 = 0;
__pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_params, __pyx_8genexpr1__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1244, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_6);
if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr1__pyx_v_k, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 1244, __pyx_L5_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_8genexpr1__pyx_v_i); __pyx_8genexpr1__pyx_v_i = 0;
__Pyx_XDECREF(__pyx_8genexpr1__pyx_v_k); __pyx_8genexpr1__pyx_v_k = 0;
goto __pyx_L8_exit_scope;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_8genexpr1__pyx_v_i); __pyx_8genexpr1__pyx_v_i = 0;
__Pyx_XDECREF(__pyx_8genexpr1__pyx_v_k); __pyx_8genexpr1__pyx_v_k = 0;
goto __pyx_L1_error;
__pyx_L8_exit_scope:;
} /* exit inner scope */
__pyx_v_kwargs = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+1245: if intervention_fun is None:
__pyx_t_7 = (__pyx_v_intervention_fun == Py_None);
__pyx_t_8 = (__pyx_t_7 != 0);
if (__pyx_t_8) {
/* … */
goto __pyx_L9;
}
+1246: contactMatrix = generator.constant_contactMatrix(**kwargs)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_constant_contactMatrix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_contactMatrix = __pyx_t_2; __pyx_t_2 = 0;
1247: else:
+1248: contactMatrix = generator.intervention_custom_temporal(intervention_fun, **kwargs)
/*else*/ {
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_generator, __pyx_n_s_intervention_custom_temporal); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_intervention_fun);
__Pyx_GIVEREF(__pyx_v_intervention_fun);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_intervention_fun);
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1248, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_contactMatrix = __pyx_t_3;
__pyx_t_3 = 0;
}
__pyx_L9:;
+1249: minus_logp = self.obtain_log_p_for_traj_matrix_fltr(x0, obs, fltr, Tf, Nf, model, contactMatrix, tangent=tangent)
__pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 1249, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_obs, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 1249, __pyx_L1_error) if (!(likely(((__pyx_v_fltr) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_fltr, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1249, __pyx_L1_error) __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_v_Tf); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1249, __pyx_L1_error) __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_Nf); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1249, __pyx_L1_error) __pyx_t_13.__pyx_n = 1; __pyx_t_13.tangent = __pyx_v_tangent; __pyx_t_12 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_matrix_fltr(__pyx_v_self, __pyx_t_9, __pyx_t_10, ((PyArrayObject *)__pyx_v_fltr), __pyx_t_11, __pyx_t_4, __pyx_v_model, __pyx_v_contactMatrix, &__pyx_t_13); __PYX_XDEC_MEMVIEW(&__pyx_t_9, 1); __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __pyx_t_3 = PyFloat_FromDouble(__pyx_t_12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_v_minus_logp = __pyx_t_3; __pyx_t_3 = 0;
+1250: minus_logp -= np.sum(lognorm.logpdf(params, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_params); __Pyx_GIVEREF(__pyx_v_params); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_params); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_s); __pyx_t_14 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 1250, __pyx_L1_error) __pyx_t_15 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, __pyx_t_14); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_14) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_14, __pyx_t_15) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_15); __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceSubtract(__pyx_v_minus_logp, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_minus_logp, __pyx_t_2); __pyx_t_2 = 0;
+1251: return minus_logp
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_minus_logp); __pyx_r = __pyx_v_minus_logp; goto __pyx_L0;
1252:
+1253: def latent_infer_control(self, keys, np.ndarray guess, np.ndarray stds, np.ndarray x0, np.ndarray obs, np.ndarray fltr,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_49latent_infer_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_48latent_infer_control[] = "\n Compute the maximum a-posteriori (MAP) estimate of the change of control parameters for a SIR type model in\n lockdown with partially observed classes. The unobserved classes are treated as latent variables. The lockdown\n is modelled by scaling the contact matrices for contact at work, school, and other (but not home) uniformly in\n all age groups. This function infers the scaling parameters.\n\n Parameters\n ----------\n keys: list\n A list of keys for the control parameters to be inferred.\n guess: numpy.array\n Prior expectation (and initial guess) for the control parameter values.\n stds: numpy.array\n Standard deviations for the log normal prior of the control parameters\n x0: numpy.array\n Initial conditions.\n obs:\n Observed trajectory (number of data points x (age groups * observed model classes)).\n fltr: boolean sequence or array\n True for observed and False for unobserved classes.\n e.g. if only Is is known for SIR with one age group, fltr = [False, False, True]\n Tf: float\n Total time of the trajectory\n Nf: float\n Number of data points along the trajectory\n generator: pyross.contactMatrix\n A pyross.contactMatrix object that generates a contact matrix function with specified lockdown\n parameters.\n bounds: 2d numpy.array\n Bounds for the parameters (number of parameters x 2).\n Note that the upper bound must be smaller than the absolute physical upper bound minus epsilon\n intervention_fun: callable, optional\n The calling signature is `intervention_func(t, **kwargs)`, where t is time and kwargs are other keyword arguments for the function.\n The function must return (aW, aS, aO). If not set, assume intervention that's constant in time and infer (aW, aS, aO).\n "" tangent: bool, optional\n Set to True to use tangent space inference. Default is false.\n verbose: bool, optional\n Set to True to see intermediate outputs from the optimizer.\n ftol: double\n Relative tolerance of logp\n global_max_iter: int, optional\n Number of global optimisations performed.\n local_max_iter: int, optional\n Number of local optimisation performed.\n global_atol: float\n The absolute tolerance for global minimisation.\n enable_global: bool, optional\n Set to True to enable global optimisation.\n enable_local: bool, optional\n Set to True to enable local optimisation.\n cma_processes: int, optional\n Number of parallel processes used for global optimisation.\n cma_population: int, optional\n The number of samples used in each step of the CMA algorithm.\n cma_stds: int, optional\n The standard deviation used in cma global optimisation. If not specified, `cma_stds` is set to `stds`.\n full_output: bool, optional\n Set to True to return full minimization output\n\n Returns\n -------\n params: numpy.array\n MAP estimate of control parameters\n y_result: float (returned if full_output is True)\n logp for MAP estimates\n\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_49latent_infer_control(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_keys = 0;
PyArrayObject *__pyx_v_guess = 0;
PyArrayObject *__pyx_v_stds = 0;
PyArrayObject *__pyx_v_x0 = 0;
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_generator = 0;
PyArrayObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_intervention_fun = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_verbose = 0;
double __pyx_v_ftol;
PyObject *__pyx_v_global_max_iter = 0;
PyObject *__pyx_v_local_max_iter = 0;
PyObject *__pyx_v_global_atol = 0;
PyObject *__pyx_v_enable_global = 0;
PyObject *__pyx_v_enable_local = 0;
PyObject *__pyx_v_cma_processes = 0;
PyObject *__pyx_v_cma_population = 0;
PyObject *__pyx_v_cma_stds = 0;
PyObject *__pyx_v_full_output = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_control (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keys,&__pyx_n_s_guess,&__pyx_n_s_stds,&__pyx_n_s_x0,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_generator,&__pyx_n_s_bounds,&__pyx_n_s_intervention_fun,&__pyx_n_s_tangent,&__pyx_n_s_verbose,&__pyx_n_s_ftol,&__pyx_n_s_global_max_iter,&__pyx_n_s_local_max_iter,&__pyx_n_s_global_atol,&__pyx_n_s_enable_global,&__pyx_n_s_enable_local,&__pyx_n_s_cma_processes,&__pyx_n_s_cma_population,&__pyx_n_s_cma_stds,&__pyx_n_s_full_output,0};
PyObject* values[23] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_48latent_infer_control(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_keys, PyArrayObject *__pyx_v_guess, PyArrayObject *__pyx_v_stds, PyArrayObject *__pyx_v_x0, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_generator, PyArrayObject *__pyx_v_bounds, PyObject *__pyx_v_intervention_fun, PyObject *__pyx_v_tangent, PyObject *__pyx_v_verbose, double __pyx_v_ftol, PyObject *__pyx_v_global_max_iter, PyObject *__pyx_v_local_max_iter, PyObject *__pyx_v_global_atol, PyObject *__pyx_v_enable_global, PyObject *__pyx_v_enable_local, PyObject *__pyx_v_cma_processes, PyObject *__pyx_v_cma_population, PyObject *__pyx_v_cma_stds, PyObject *__pyx_v_full_output) {
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_scale = NULL;
PyObject *__pyx_v_minimize_args = NULL;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_v_params = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("latent_infer_control", 0);
__Pyx_INCREF((PyObject *)__pyx_v_obs);
__Pyx_INCREF((PyObject *)__pyx_v_fltr);
__Pyx_INCREF(__pyx_v_cma_stds);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_control", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_minimize_args);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_XDECREF(__pyx_v_params);
__Pyx_XDECREF((PyObject *)__pyx_v_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr);
__Pyx_XDECREF(__pyx_v_cma_stds);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1254: double Tf, Py_ssize_t Nf, generator, np.ndarray bounds,
+1255: intervention_fun=None, tangent=False,
values[10] = ((PyObject *)Py_None);
values[11] = ((PyObject *)Py_False);
+1256: verbose=False, double ftol=1e-5, global_max_iter=100,
values[12] = ((PyObject *)Py_False);
values[14] = ((PyObject *)__pyx_int_100);
values[15] = ((PyObject *)__pyx_int_100);
values[16] = ((PyObject *)__pyx_float_1_);
+1257: local_max_iter=100, global_atol=1., enable_global=True, enable_local=True,
values[17] = ((PyObject *)Py_True);
values[18] = ((PyObject *)Py_True);
values[19] = ((PyObject *)__pyx_int_0);
values[20] = ((PyObject *)__pyx_int_16);
+1258: cma_processes=0, cma_population=16, cma_stds=None, full_output=False):
values[21] = ((PyObject *)Py_None);
values[22] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 23: values[22] = PyTuple_GET_ITEM(__pyx_args, 22);
CYTHON_FALLTHROUGH;
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_guess)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, 1); __PYX_ERR(0, 1253, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, 2); __PYX_ERR(0, 1253, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, 3); __PYX_ERR(0, 1253, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, 4); __PYX_ERR(0, 1253, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, 5); __PYX_ERR(0, 1253, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, 6); __PYX_ERR(0, 1253, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, 7); __PYX_ERR(0, 1253, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_generator)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, 8); __PYX_ERR(0, 1253, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 9:
if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, 9); __PYX_ERR(0, 1253, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_intervention_fun);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_verbose);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ftol);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_max_iter);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_local_max_iter);
if (value) { values[15] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 16:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_global_atol);
if (value) { values[16] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 17:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_global);
if (value) { values[17] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 18:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_enable_local);
if (value) { values[18] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 19:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_processes);
if (value) { values[19] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 20:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_population);
if (value) { values[20] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 21:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_cma_stds);
if (value) { values[21] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 22:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_full_output);
if (value) { values[22] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "latent_infer_control") < 0)) __PYX_ERR(0, 1253, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 23: values[22] = PyTuple_GET_ITEM(__pyx_args, 22);
CYTHON_FALLTHROUGH;
case 22: values[21] = PyTuple_GET_ITEM(__pyx_args, 21);
CYTHON_FALLTHROUGH;
case 21: values[20] = PyTuple_GET_ITEM(__pyx_args, 20);
CYTHON_FALLTHROUGH;
case 20: values[19] = PyTuple_GET_ITEM(__pyx_args, 19);
CYTHON_FALLTHROUGH;
case 19: values[18] = PyTuple_GET_ITEM(__pyx_args, 18);
CYTHON_FALLTHROUGH;
case 18: values[17] = PyTuple_GET_ITEM(__pyx_args, 17);
CYTHON_FALLTHROUGH;
case 17: values[16] = PyTuple_GET_ITEM(__pyx_args, 16);
CYTHON_FALLTHROUGH;
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_keys = values[0];
__pyx_v_guess = ((PyArrayObject *)values[1]);
__pyx_v_stds = ((PyArrayObject *)values[2]);
__pyx_v_x0 = ((PyArrayObject *)values[3]);
__pyx_v_obs = ((PyArrayObject *)values[4]);
__pyx_v_fltr = ((PyArrayObject *)values[5]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[6]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1254, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[7]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1254, __pyx_L3_error)
__pyx_v_generator = values[8];
__pyx_v_bounds = ((PyArrayObject *)values[9]);
__pyx_v_intervention_fun = values[10];
__pyx_v_tangent = values[11];
__pyx_v_verbose = values[12];
if (values[13]) {
__pyx_v_ftol = __pyx_PyFloat_AsDouble(values[13]); if (unlikely((__pyx_v_ftol == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1256, __pyx_L3_error)
} else {
__pyx_v_ftol = ((double)1e-5);
}
__pyx_v_global_max_iter = values[14];
__pyx_v_local_max_iter = values[15];
__pyx_v_global_atol = values[16];
__pyx_v_enable_global = values[17];
__pyx_v_enable_local = values[18];
__pyx_v_cma_processes = values[19];
__pyx_v_cma_population = values[20];
__pyx_v_cma_stds = values[21];
__pyx_v_full_output = values[22];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("latent_infer_control", 0, 10, 23, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1253, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.latent_infer_control", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_guess), __pyx_ptype_5numpy_ndarray, 1, "guess", 0))) __PYX_ERR(0, 1253, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_stds), __pyx_ptype_5numpy_ndarray, 1, "stds", 0))) __PYX_ERR(0, 1253, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x0), __pyx_ptype_5numpy_ndarray, 1, "x0", 0))) __PYX_ERR(0, 1253, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 1253, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 1253, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_bounds), __pyx_ptype_5numpy_ndarray, 1, "bounds", 0))) __PYX_ERR(0, 1254, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_48latent_infer_control(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_keys, __pyx_v_guess, __pyx_v_stds, __pyx_v_x0, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_generator, __pyx_v_bounds, __pyx_v_intervention_fun, __pyx_v_tangent, __pyx_v_verbose, __pyx_v_ftol, __pyx_v_global_max_iter, __pyx_v_local_max_iter, __pyx_v_global_atol, __pyx_v_enable_global, __pyx_v_enable_local, __pyx_v_cma_processes, __pyx_v_cma_population, __pyx_v_cma_stds, __pyx_v_full_output);
1259: """
1260: Compute the maximum a-posteriori (MAP) estimate of the change of control parameters for a SIR type model in
1261: lockdown with partially observed classes. The unobserved classes are treated as latent variables. The lockdown
1262: is modelled by scaling the contact matrices for contact at work, school, and other (but not home) uniformly in
1263: all age groups. This function infers the scaling parameters.
1264:
1265: Parameters
1266: ----------
1267: keys: list
1268: A list of keys for the control parameters to be inferred.
1269: guess: numpy.array
1270: Prior expectation (and initial guess) for the control parameter values.
1271: stds: numpy.array
1272: Standard deviations for the log normal prior of the control parameters
1273: x0: numpy.array
1274: Initial conditions.
1275: obs:
1276: Observed trajectory (number of data points x (age groups * observed model classes)).
1277: fltr: boolean sequence or array
1278: True for observed and False for unobserved classes.
1279: e.g. if only Is is known for SIR with one age group, fltr = [False, False, True]
1280: Tf: float
1281: Total time of the trajectory
1282: Nf: float
1283: Number of data points along the trajectory
1284: generator: pyross.contactMatrix
1285: A pyross.contactMatrix object that generates a contact matrix function with specified lockdown
1286: parameters.
1287: bounds: 2d numpy.array
1288: Bounds for the parameters (number of parameters x 2).
1289: Note that the upper bound must be smaller than the absolute physical upper bound minus epsilon
1290: intervention_fun: callable, optional
1291: The calling signature is `intervention_func(t, **kwargs)`, where t is time and kwargs are other keyword arguments for the function.
1292: The function must return (aW, aS, aO). If not set, assume intervention that's constant in time and infer (aW, aS, aO).
1293: tangent: bool, optional
1294: Set to True to use tangent space inference. Default is false.
1295: verbose: bool, optional
1296: Set to True to see intermediate outputs from the optimizer.
1297: ftol: double
1298: Relative tolerance of logp
1299: global_max_iter: int, optional
1300: Number of global optimisations performed.
1301: local_max_iter: int, optional
1302: Number of local optimisation performed.
1303: global_atol: float
1304: The absolute tolerance for global minimisation.
1305: enable_global: bool, optional
1306: Set to True to enable global optimisation.
1307: enable_local: bool, optional
1308: Set to True to enable local optimisation.
1309: cma_processes: int, optional
1310: Number of parallel processes used for global optimisation.
1311: cma_population: int, optional
1312: The number of samples used in each step of the CMA algorithm.
1313: cma_stds: int, optional
1314: The standard deviation used in cma global optimisation. If not specified, `cma_stds` is set to `stds`.
1315: full_output: bool, optional
1316: Set to True to return full minimization output
1317:
1318: Returns
1319: -------
1320: params: numpy.array
1321: MAP estimate of control parameters
1322: y_result: float (returned if full_output is True)
1323: logp for MAP estimates
1324:
1325: """
+1326: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_fltr), __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_fltr), __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1326, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
+1327: fltr = fltr[1:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_fltr), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1327, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
+1328: obs = pyross.utils.process_obs(obs[1:], Nf-1)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_process_obs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_obs), 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_t_3); __pyx_t_6 = 0; __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1328, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_obs, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
+1329: s, scale = pyross.utils.make_log_norm_dist(guess, stds)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_guess), ((PyObject *)__pyx_v_stds)}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_guess), ((PyObject *)__pyx_v_stds)}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_guess)); __Pyx_GIVEREF(((PyObject *)__pyx_v_guess)); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, ((PyObject *)__pyx_v_guess)); __Pyx_INCREF(((PyObject *)__pyx_v_stds)); __Pyx_GIVEREF(((PyObject *)__pyx_v_stds)); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, ((PyObject *)__pyx_v_stds)); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1329, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_3 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1329, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1329, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_s = __pyx_t_2; __pyx_t_2 = 0; __pyx_v_scale = __pyx_t_3; __pyx_t_3 = 0;
1330:
+1331: if cma_stds is None:
__pyx_t_9 = (__pyx_v_cma_stds == Py_None);
__pyx_t_10 = (__pyx_t_9 != 0);
if (__pyx_t_10) {
/* … */
}
1332: # Use prior standard deviations here
+1333: cma_stds = stds
__Pyx_INCREF(((PyObject *)__pyx_v_stds)); __Pyx_DECREF_SET(__pyx_v_cma_stds, ((PyObject *)__pyx_v_stds));
1334:
+1335: minimize_args = {'keys':keys, 'bounds':bounds, 'generator':generator, 'x0':x0, 'obs':obs, 'fltr':fltr, 'Tf':Tf,
__pyx_t_1 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_bounds, ((PyObject *)__pyx_v_bounds)) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_generator, __pyx_v_generator) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_x0, ((PyObject *)__pyx_v_x0)) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_obs, ((PyObject *)__pyx_v_obs)) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_fltr, ((PyObject *)__pyx_v_fltr)) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) __pyx_t_3 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Tf, __pyx_t_3) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1336: 'Nf':Nf, 's':s, 'scale':scale, 'intervention_fun':intervention_fun, 'tangent': tangent}
__pyx_t_3 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Nf, __pyx_t_3) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_s, __pyx_v_s) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_intervention_fun, __pyx_v_intervention_fun) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_tangent, __pyx_v_tangent) < 0) __PYX_ERR(0, 1335, __pyx_L1_error) __pyx_v_minimize_args = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+1337: res = minimization(self._latent_infer_control_to_minimize, guess, bounds, ftol=ftol, global_max_iter=global_max_iter,
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_minimization); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_latent_infer_control_to_minimiz); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_INCREF(((PyObject *)__pyx_v_guess)); __Pyx_GIVEREF(((PyObject *)__pyx_v_guess)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_guess)); __Pyx_INCREF(((PyObject *)__pyx_v_bounds)); __Pyx_GIVEREF(((PyObject *)__pyx_v_bounds)); PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_bounds)); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_ftol); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_ftol, __pyx_t_7) < 0) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_global_max_iter, __pyx_v_global_max_iter) < 0) __PYX_ERR(0, 1337, __pyx_L1_error) /* … */ __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_res = __pyx_t_7; __pyx_t_7 = 0;
+1338: local_max_iter=local_max_iter, global_atol=global_atol,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_local_max_iter, __pyx_v_local_max_iter) < 0) __PYX_ERR(0, 1337, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_global_atol, __pyx_v_global_atol) < 0) __PYX_ERR(0, 1337, __pyx_L1_error)
+1339: enable_global=enable_global, enable_local=enable_local, cma_processes=cma_processes,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_enable_global, __pyx_v_enable_global) < 0) __PYX_ERR(0, 1337, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_enable_local, __pyx_v_enable_local) < 0) __PYX_ERR(0, 1337, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_cma_processes, __pyx_v_cma_processes) < 0) __PYX_ERR(0, 1337, __pyx_L1_error)
+1340: cma_population=cma_population, cma_stds=cma_stds, verbose=verbose, args_dict=minimize_args)
if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_cma_population, __pyx_v_cma_population) < 0) __PYX_ERR(0, 1337, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_cma_stds, __pyx_v_cma_stds) < 0) __PYX_ERR(0, 1337, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_verbose, __pyx_v_verbose) < 0) __PYX_ERR(0, 1337, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_args_dict, __pyx_v_minimize_args) < 0) __PYX_ERR(0, 1337, __pyx_L1_error)
+1341: params = res[0]
__pyx_t_7 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_v_params = __pyx_t_7; __pyx_t_7 = 0;
1342:
+1343: if full_output == True:
__pyx_t_7 = PyObject_RichCompare(__pyx_v_full_output, Py_True, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1343, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 1343, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_10) { /* … */ }
+1344: return res
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_res); __pyx_r = __pyx_v_res; goto __pyx_L0;
1345: else:
+1346: return params
/*else*/ {
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_params);
__pyx_r = __pyx_v_params;
goto __pyx_L0;
}
1347:
1348:
+1349: def compute_hessian_latent(self, param_keys, init_fltr, maps, prior_mean, prior_stds, obs, fltr, Tf, Nf, contactMatrix,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_51compute_hessian_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_50compute_hessian_latent[] = "Computes the Hessian over the parameters and initial conditions.\n\n Parameters\n ----------\n maps: numpy.array\n MAP parameter and initial condition estimate (computed for example with SIR_type.latent_inference).\n obs: numpy.array\n The observed data with the initial datapoint\n fltr: boolean sequence or array\n True for observed and False for unobserved.\n e.g. if only `Is` is known for SIR with one age group, fltr = [False, False, True]\n Tf: float\n Total time of the trajectory\n Nf: int\n Total number of data points along the trajectory\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n eps: float or numpy.array, optional\n Step size in the calculation of the Hessian.\n obs0: numpy.array, optional\n Observed initial condition, if more detailed than obs[0]\n fltr0: 2d numpy.array, optional\n Matrix filter for obs0\n fd_method: str, optional\n The type of finite-difference scheme used to compute the hessian, supports \"forward\" and \"central\".\n\n Returns\n -------\n hess: numpy.array\n The Hessian over (flat) parameters and initial conditions.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_51compute_hessian_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_init_fltr = 0;
PyObject *__pyx_v_maps = 0;
PyObject *__pyx_v_prior_mean = 0;
PyObject *__pyx_v_prior_stds = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_fltr0 = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_hessian_latent (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_keys,&__pyx_n_s_init_fltr,&__pyx_n_s_maps,&__pyx_n_s_prior_mean,&__pyx_n_s_prior_stds,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_eps,&__pyx_n_s_obs0,&__pyx_n_s_fltr0,&__pyx_n_s_fd_method,0};
PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_50compute_hessian_latent(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_init_fltr, PyObject *__pyx_v_maps, PyObject *__pyx_v_prior_mean, PyObject *__pyx_v_prior_stds, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_eps, PyObject *__pyx_v_obs0, PyObject *__pyx_v_fltr0, PyObject *__pyx_v_fd_method) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6_compute_hessian_latent *__pyx_cur_scope;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_maps = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_flat_prior_mean = NULL;
PyObject *__pyx_v_flat_prior_stds = NULL;
PyObject *__pyx_v_minuslogP = 0;
PyObject *__pyx_v_hess = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_hessian_latent", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6_compute_hessian_latent *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_6_compute_hessian_latent(__pyx_ptype_6pyross_9inference___pyx_scope_struct_6_compute_hessian_latent, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6_compute_hessian_latent *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 1349, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_param_keys = __pyx_v_param_keys;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
__pyx_cur_scope->__pyx_v_init_fltr = __pyx_v_init_fltr;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_init_fltr);
__pyx_cur_scope->__pyx_v_obs = __pyx_v_obs;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs);
__pyx_cur_scope->__pyx_v_fltr = __pyx_v_fltr;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr);
__pyx_cur_scope->__pyx_v_Tf = __pyx_v_Tf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Tf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Tf);
__pyx_cur_scope->__pyx_v_Nf = __pyx_v_Nf;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_cur_scope->__pyx_v_tangent = __pyx_v_tangent;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_tangent);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tangent);
__pyx_cur_scope->__pyx_v_obs0 = __pyx_v_obs0;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs0);
__pyx_cur_scope->__pyx_v_fltr0 = __pyx_v_fltr0;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type.compute_hessian_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_maps);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_flat_prior_mean);
__Pyx_XDECREF(__pyx_v_flat_prior_stds);
__Pyx_XDECREF(__pyx_v_minuslogP);
__Pyx_XDECREF(__pyx_v_hess);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6_compute_hessian_latent {
PyObject_HEAD
PyObject *__pyx_v_Nf;
PyObject *__pyx_v_Tf;
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_flat_maps_range;
PyObject *__pyx_v_fltr;
PyObject *__pyx_v_fltr0;
PyObject *__pyx_v_init_fltr;
PyObject *__pyx_v_is_scale_parameter;
PyObject *__pyx_v_obs;
PyObject *__pyx_v_obs0;
Py_ssize_t __pyx_v_param_dim;
PyObject *__pyx_v_param_keys;
PyObject *__pyx_v_s;
PyObject *__pyx_v_scale;
PyObject *__pyx_v_scaled_maps;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_tangent;
};
+1350: tangent=False, infer_scale_parameter=False, eps=1.e-3, obs0=None, fltr0=None, fd_method="central"):
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)Py_False);
values[12] = ((PyObject *)__pyx_float_1_eneg_3);
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)__pyx_n_u_central);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, 1); __PYX_ERR(0, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, 2); __PYX_ERR(0, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_mean)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, 3); __PYX_ERR(0, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, 4); __PYX_ERR(0, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, 5); __PYX_ERR(0, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, 6); __PYX_ERR(0, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, 7); __PYX_ERR(0, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, 8); __PYX_ERR(0, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 9:
if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, 9); __PYX_ERR(0, 1349, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr0);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[15] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "compute_hessian_latent") < 0)) __PYX_ERR(0, 1349, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_keys = values[0];
__pyx_v_init_fltr = values[1];
__pyx_v_maps = values[2];
__pyx_v_prior_mean = values[3];
__pyx_v_prior_stds = values[4];
__pyx_v_obs = values[5];
__pyx_v_fltr = values[6];
__pyx_v_Tf = values[7];
__pyx_v_Nf = values[8];
__pyx_v_contactMatrix = values[9];
__pyx_v_tangent = values[10];
__pyx_v_infer_scale_parameter = values[11];
__pyx_v_eps = values[12];
__pyx_v_obs0 = values[13];
__pyx_v_fltr0 = values[14];
__pyx_v_fd_method = values[15];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("compute_hessian_latent", 0, 10, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1349, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.compute_hessian_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_50compute_hessian_latent(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_param_keys, __pyx_v_init_fltr, __pyx_v_maps, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_eps, __pyx_v_obs0, __pyx_v_fltr0, __pyx_v_fd_method);
1351: '''Computes the Hessian over the parameters and initial conditions.
1352:
1353: Parameters
1354: ----------
1355: maps: numpy.array
1356: MAP parameter and initial condition estimate (computed for example with SIR_type.latent_inference).
1357: obs: numpy.array
1358: The observed data with the initial datapoint
1359: fltr: boolean sequence or array
1360: True for observed and False for unobserved.
1361: e.g. if only `Is` is known for SIR with one age group, fltr = [False, False, True]
1362: Tf: float
1363: Total time of the trajectory
1364: Nf: int
1365: Total number of data points along the trajectory
1366: contactMatrix: callable
1367: A function that returns the contact matrix at time t (input).
1368: eps: float or numpy.array, optional
1369: Step size in the calculation of the Hessian.
1370: obs0: numpy.array, optional
1371: Observed initial condition, if more detailed than obs[0]
1372: fltr0: 2d numpy.array, optional
1373: Matrix filter for obs0
1374: fd_method: str, optional
1375: The type of finite-difference scheme used to compute the hessian, supports "forward" and "central".
1376:
1377: Returns
1378: -------
1379: hess: numpy.array
1380: The Hessian over (flat) parameters and initial conditions.
1381: '''
+1382: param_dim = len(param_keys)
__pyx_t_1 = __pyx_cur_scope->__pyx_v_param_keys; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1382, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_cur_scope->__pyx_v_param_dim = __pyx_t_2;
+1383: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_fltr, __pyx_cur_scope->__pyx_v_Nf}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_fltr, __pyx_cur_scope->__pyx_v_Nf}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_cur_scope->__pyx_v_fltr); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_Nf); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_Nf); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fltr); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_fltr, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
1384:
+1385: if obs0 is None or fltr0 is None:
__pyx_t_8 = (__pyx_cur_scope->__pyx_v_obs0 == Py_None);
__pyx_t_9 = (__pyx_t_8 != 0);
if (!__pyx_t_9) {
} else {
__pyx_t_7 = __pyx_t_9;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_9 = (__pyx_cur_scope->__pyx_v_fltr0 == Py_None);
__pyx_t_8 = (__pyx_t_9 != 0);
__pyx_t_7 = __pyx_t_8;
__pyx_L4_bool_binop_done:;
if (__pyx_t_7) {
/* … */
}
1386: # Use the same filter and observation for initial condition as for the rest of the trajectory, unless
1387: # specified otherwise
+1388: obs0=obs[0]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_obs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1388, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_obs0); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_obs0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
+1389: fltr0=fltr[0]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_cur_scope->__pyx_v_fltr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1389, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fltr0); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_fltr0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
1390:
+1391: obs = pyross.utils.process_obs(obs[1:], Nf-1)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_process_obs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_obs, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_cur_scope->__pyx_v_Nf, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_6, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_t_6, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_11 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_5, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_5, __pyx_t_4); __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1391, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_obs); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_obs, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
+1392: fltr = fltr[1:]
__pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_cur_scope->__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1392, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_fltr); __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_fltr, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_t_1 = 0;
1393:
+1394: bounds = np.zeros((len(maps), 2)) # This does not matter here
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = PyObject_Length(__pyx_v_maps); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1394, __pyx_L1_error) __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_2); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1394, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_bounds = __pyx_t_1; __pyx_t_1 = 0;
+1395: flat_maps, _, _, flat_maps_range, is_scale_parameter, scaled_maps \
__pyx_v_flat_maps = __pyx_t_11; __pyx_t_11 = 0; __pyx_v__ = __pyx_t_3; __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_4); __pyx_t_4 = 0; __Pyx_GIVEREF(__pyx_t_6); __pyx_cur_scope->__pyx_v_flat_maps_range = __pyx_t_6; __pyx_t_6 = 0; __Pyx_GIVEREF(__pyx_t_10); __pyx_cur_scope->__pyx_v_is_scale_parameter = __pyx_t_10; __pyx_t_10 = 0; __Pyx_GIVEREF(__pyx_t_12); __pyx_cur_scope->__pyx_v_scaled_maps = __pyx_t_12; __pyx_t_12 = 0;
+1396: = self._flatten_parameters(maps, prior_stds, bounds, infer_scale_parameter)
__pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1396, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1396, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_5, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1396, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1395, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_11 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_11 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_4 = PyList_GET_ITEM(sequence, 2); __pyx_t_6 = PyList_GET_ITEM(sequence, 3); __pyx_t_10 = PyList_GET_ITEM(sequence, 4); __pyx_t_12 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_12); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_11,&__pyx_t_3,&__pyx_t_4,&__pyx_t_6,&__pyx_t_10,&__pyx_t_12}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1395, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_11,&__pyx_t_3,&__pyx_t_4,&__pyx_t_6,&__pyx_t_10,&__pyx_t_12}; __pyx_t_13 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1395, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 6) < 0) __PYX_ERR(0, 1395, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1395, __pyx_L1_error) __pyx_L7_unpacking_done:; }
+1397: flat_prior_mean, flat_prior_stds, _, _, _, _ \
__pyx_v_flat_prior_mean = __pyx_t_12; __pyx_t_12 = 0; __pyx_v_flat_prior_stds = __pyx_t_6; __pyx_t_6 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_11); __pyx_t_11 = 0;
+1398: = self._flatten_parameters(prior_mean, prior_stds, bounds, infer_scale_parameter)
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_10 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1398, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1398, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_prior_mean); __Pyx_GIVEREF(__pyx_v_prior_mean); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_prior_mean); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, __pyx_v_infer_scale_parameter); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1398, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1397, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_12 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); __pyx_t_10 = PyList_GET_ITEM(sequence, 2); __pyx_t_4 = PyList_GET_ITEM(sequence, 3); __pyx_t_3 = PyList_GET_ITEM(sequence, 4); __pyx_t_11 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_11); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_12,&__pyx_t_6,&__pyx_t_10,&__pyx_t_4,&__pyx_t_3,&__pyx_t_11}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1397, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_12,&__pyx_t_6,&__pyx_t_10,&__pyx_t_4,&__pyx_t_3,&__pyx_t_11}; __pyx_t_13 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1397, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 6) < 0) __PYX_ERR(0, 1397, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1397, __pyx_L1_error) __pyx_L9_unpacking_done:; }
1399:
+1400: s, scale = pyross.utils.make_log_norm_dist(flat_prior_mean, flat_prior_stds)
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_pyross); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_flat_prior_mean); __Pyx_GIVEREF(__pyx_v_flat_prior_mean); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_flat_prior_mean); __Pyx_INCREF(__pyx_v_flat_prior_stds); __Pyx_GIVEREF(__pyx_v_flat_prior_stds); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_flat_prior_stds); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1400, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_11 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_11 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_11 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1400, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_11 = __pyx_t_14(__pyx_t_3); if (unlikely(!__pyx_t_11)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_11); index = 1; __pyx_t_4 = __pyx_t_14(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1400, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1400, __pyx_L1_error) __pyx_L11_unpacking_done:; } __Pyx_GIVEREF(__pyx_t_11); __pyx_cur_scope->__pyx_v_s = __pyx_t_11; __pyx_t_11 = 0; __Pyx_GIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_v_scale = __pyx_t_4; __pyx_t_4 = 0;
1401:
+1402: def minuslogP(y):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_22compute_hessian_latent_1minuslogP(PyObject *__pyx_self, PyObject *__pyx_v_y); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_22compute_hessian_latent_1minuslogP = {"minuslogP", (PyCFunction)__pyx_pw_6pyross_9inference_8SIR_type_22compute_hessian_latent_1minuslogP, METH_O, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_22compute_hessian_latent_1minuslogP(PyObject *__pyx_self, PyObject *__pyx_v_y) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minuslogP (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_22compute_hessian_latent_minuslogP(__pyx_self, ((PyObject *)__pyx_v_y));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_22compute_hessian_latent_minuslogP(PyObject *__pyx_self, PyObject *__pyx_v_y) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6_compute_hessian_latent *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6_compute_hessian_latent *__pyx_outer_scope;
PyObject *__pyx_v_y_unflat = NULL;
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_model = NULL;
PyObject *__pyx_v_minuslogp = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minuslogP", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_6_compute_hessian_latent *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type.compute_hessian_latent.minuslogP", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_y_unflat);
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_model);
__Pyx_XDECREF(__pyx_v_minuslogp);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__27 = PyTuple_Pack(7, __pyx_n_s_y, __pyx_n_s_y_unflat, __pyx_n_s_inits, __pyx_n_s_x0, __pyx_n_s_parameters, __pyx_n_s_model, __pyx_n_s_minuslogp); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 1402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__27);
__Pyx_GIVEREF(__pyx_tuple__27);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_22compute_hessian_latent_1minuslogP, 0, __pyx_n_s_compute_hessian_latent_locals_mi, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1402, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_minuslogP = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_minuslogP, 1402, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 1402, __pyx_L1_error)
+1403: y_unflat = self._unflatten_parameters(y, flat_maps_range, is_scale_parameter, scaled_maps)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1403, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_unflatten_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1403, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (unlikely(!__pyx_cur_scope->__pyx_v_flat_maps_range)) { __Pyx_RaiseClosureNameError("flat_maps_range"); __PYX_ERR(0, 1403, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_is_scale_parameter)) { __Pyx_RaiseClosureNameError("is_scale_parameter"); __PYX_ERR(0, 1403, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_scaled_maps)) { __Pyx_RaiseClosureNameError("scaled_maps"); __PYX_ERR(0, 1403, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1403, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_v_y, __pyx_cur_scope->__pyx_v_flat_maps_range, __pyx_cur_scope->__pyx_v_is_scale_parameter, __pyx_cur_scope->__pyx_v_scaled_maps};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1403, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_5 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1403, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_y);
__Pyx_GIVEREF(__pyx_v_y);
PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_y);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_flat_maps_range);
PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_flat_maps_range);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_is_scale_parameter);
PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_is_scale_parameter);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_scaled_maps);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_scaled_maps);
PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_scaled_maps);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1403, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_y_unflat = __pyx_t_1;
__pyx_t_1 = 0;
+1404: inits = np.copy(y_unflat[param_dim:])
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1404, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1404, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_y_unflat, __pyx_cur_scope->__pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1404, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1404, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_inits = __pyx_t_1; __pyx_t_1 = 0;
+1405: x0 = self.fill_initial_conditions(inits, obs0, init_fltr, fltr0)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1405, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_initial_conditions); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1405, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_obs0)) { __Pyx_RaiseClosureNameError("obs0"); __PYX_ERR(0, 1405, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_init_fltr)) { __Pyx_RaiseClosureNameError("init_fltr"); __PYX_ERR(0, 1405, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr0)) { __Pyx_RaiseClosureNameError("fltr0"); __PYX_ERR(0, 1405, __pyx_L1_error) }
__pyx_t_2 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1405, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[5] = {__pyx_t_2, __pyx_v_inits, __pyx_cur_scope->__pyx_v_obs0, __pyx_cur_scope->__pyx_v_init_fltr, __pyx_cur_scope->__pyx_v_fltr0};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1405, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_3 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1405, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (__pyx_t_2) {
__Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
}
__Pyx_INCREF(__pyx_v_inits);
__Pyx_GIVEREF(__pyx_v_inits);
PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_inits);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_obs0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_obs0);
PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_obs0);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_init_fltr);
PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_4, __pyx_cur_scope->__pyx_v_init_fltr);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_fltr0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fltr0);
PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_4, __pyx_cur_scope->__pyx_v_fltr0);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1405, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_x0 = __pyx_t_1;
__pyx_t_1 = 0;
+1406: parameters = self.fill_params_dict(param_keys, y_unflat)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1406, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1406, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_param_keys)) { __Pyx_RaiseClosureNameError("param_keys"); __PYX_ERR(0, 1406, __pyx_L1_error) }
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1406, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_keys, __pyx_v_y_unflat};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1406, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1406, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_keys);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_keys);
PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_param_keys);
__Pyx_INCREF(__pyx_v_y_unflat);
__Pyx_GIVEREF(__pyx_v_y_unflat);
PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_v_y_unflat);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1406, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_parameters = __pyx_t_1;
__pyx_t_1 = 0;
+1407: self.set_params(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1407, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1407, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1408: model = self.make_det_model(parameters)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1408, __pyx_L1_error) }
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1408, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_2 = NULL;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_2)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_2, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_parameters);
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1408, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_v_model = __pyx_t_1;
__pyx_t_1 = 0;
+1409: minuslogp = self.obtain_log_p_for_traj_matrix_fltr(x0, obs, fltr, Tf, Nf, model, contactMatrix, tangent)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1409, __pyx_L1_error) }
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 1409, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_obs)) { __Pyx_RaiseClosureNameError("obs"); __PYX_ERR(0, 1409, __pyx_L1_error) }
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_cur_scope->__pyx_v_obs, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1409, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_fltr)) { __Pyx_RaiseClosureNameError("fltr"); __PYX_ERR(0, 1409, __pyx_L1_error) }
if (!(likely(((__pyx_cur_scope->__pyx_v_fltr) == Py_None) || likely(__Pyx_TypeTest(__pyx_cur_scope->__pyx_v_fltr, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1409, __pyx_L1_error)
__pyx_t_1 = __pyx_cur_scope->__pyx_v_fltr;
__Pyx_INCREF(__pyx_t_1);
if (unlikely(!__pyx_cur_scope->__pyx_v_Tf)) { __Pyx_RaiseClosureNameError("Tf"); __PYX_ERR(0, 1409, __pyx_L1_error) }
__pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_cur_scope->__pyx_v_Tf); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_Nf)) { __Pyx_RaiseClosureNameError("Nf"); __PYX_ERR(0, 1409, __pyx_L1_error) }
__pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_cur_scope->__pyx_v_Nf); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1409, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 1409, __pyx_L1_error) }
__pyx_t_5 = __pyx_cur_scope->__pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_t_5);
if (unlikely(!__pyx_cur_scope->__pyx_v_tangent)) { __Pyx_RaiseClosureNameError("tangent"); __PYX_ERR(0, 1409, __pyx_L1_error) }
__pyx_t_2 = __pyx_cur_scope->__pyx_v_tangent;
__Pyx_INCREF(__pyx_t_2);
__pyx_t_11.__pyx_n = 1;
__pyx_t_11.tangent = __pyx_t_2;
__pyx_t_10 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_matrix_fltr(__pyx_cur_scope->__pyx_v_self, __pyx_t_6, __pyx_t_7, ((PyArrayObject *)__pyx_t_1), __pyx_t_8, __pyx_t_9, __pyx_v_model, __pyx_t_5, &__pyx_t_11);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyFloat_FromDouble(__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1409, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_minuslogp = __pyx_t_2;
__pyx_t_2 = 0;
+1410: minuslogp -= np.sum(lognorm.logpdf(y, s, scale=scale))
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_cur_scope->__pyx_v_s)) { __Pyx_RaiseClosureNameError("s"); __PYX_ERR(0, 1410, __pyx_L1_error) } __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_y); __Pyx_GIVEREF(__pyx_v_y); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_y); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_s); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_cur_scope->__pyx_v_s); __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (unlikely(!__pyx_cur_scope->__pyx_v_scale)) { __Pyx_RaiseClosureNameError("scale"); __PYX_ERR(0, 1410, __pyx_L1_error) } if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_scale, __pyx_cur_scope->__pyx_v_scale) < 0) __PYX_ERR(0, 1410, __pyx_L1_error) __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_2 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_12, __pyx_t_13) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_13); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_InPlaceSubtract(__pyx_v_minuslogp, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF_SET(__pyx_v_minuslogp, __pyx_t_1); __pyx_t_1 = 0;
+1411: return minuslogp
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_minuslogp); __pyx_r = __pyx_v_minuslogp; goto __pyx_L0;
1412:
+1413: hess = pyross.utils.hessian_finite_difference(flat_maps, minuslogP, eps, method=fd_method)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_hessian_finite_difference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_flat_maps); __Pyx_GIVEREF(__pyx_v_flat_maps); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_flat_maps); __Pyx_INCREF(__pyx_v_minuslogP); __Pyx_GIVEREF(__pyx_v_minuslogP); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_minuslogP); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_eps); __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_method, __pyx_v_fd_method) < 0) __PYX_ERR(0, 1413, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_hess = __pyx_t_3; __pyx_t_3 = 0;
+1414: return hess
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_hess); __pyx_r = __pyx_v_hess; goto __pyx_L0;
1415:
+1416: def error_bars_latent(self, param_keys, init_fltr, maps, prior_mean, prior_stds, obs, fltr, Tf, Nf, contactMatrix,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_53error_bars_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_53error_bars_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_init_fltr = 0;
PyObject *__pyx_v_maps = 0;
PyObject *__pyx_v_prior_mean = 0;
PyObject *__pyx_v_prior_stds = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_fltr0 = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("error_bars_latent (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_keys,&__pyx_n_s_init_fltr,&__pyx_n_s_maps,&__pyx_n_s_prior_mean,&__pyx_n_s_prior_stds,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_eps,&__pyx_n_s_obs0,&__pyx_n_s_fltr0,&__pyx_n_s_fd_method,0};
PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_52error_bars_latent(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_init_fltr, PyObject *__pyx_v_maps, PyObject *__pyx_v_prior_mean, PyObject *__pyx_v_prior_stds, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_eps, PyObject *__pyx_v_obs0, PyObject *__pyx_v_fltr0, PyObject *__pyx_v_fd_method) {
PyObject *__pyx_v_hessian = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("error_bars_latent", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.error_bars_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_hessian);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1417: tangent=False, infer_scale_parameter=False, eps=1.e-3, obs0=None, fltr0=None, fd_method="central"):
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)Py_False);
values[12] = ((PyObject *)__pyx_float_1_eneg_3);
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)__pyx_n_u_central);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, 1); __PYX_ERR(0, 1416, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, 2); __PYX_ERR(0, 1416, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_mean)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, 3); __PYX_ERR(0, 1416, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, 4); __PYX_ERR(0, 1416, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, 5); __PYX_ERR(0, 1416, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, 6); __PYX_ERR(0, 1416, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, 7); __PYX_ERR(0, 1416, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, 8); __PYX_ERR(0, 1416, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 9:
if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, 9); __PYX_ERR(0, 1416, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr0);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[15] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "error_bars_latent") < 0)) __PYX_ERR(0, 1416, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_keys = values[0];
__pyx_v_init_fltr = values[1];
__pyx_v_maps = values[2];
__pyx_v_prior_mean = values[3];
__pyx_v_prior_stds = values[4];
__pyx_v_obs = values[5];
__pyx_v_fltr = values[6];
__pyx_v_Tf = values[7];
__pyx_v_Nf = values[8];
__pyx_v_contactMatrix = values[9];
__pyx_v_tangent = values[10];
__pyx_v_infer_scale_parameter = values[11];
__pyx_v_eps = values[12];
__pyx_v_obs0 = values[13];
__pyx_v_fltr0 = values[14];
__pyx_v_fd_method = values[15];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("error_bars_latent", 0, 10, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1416, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.error_bars_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_52error_bars_latent(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_param_keys, __pyx_v_init_fltr, __pyx_v_maps, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_eps, __pyx_v_obs0, __pyx_v_fltr0, __pyx_v_fd_method);
+1418: hessian = self.compute_hessian_latent(param_keys, init_fltr, maps, prior_mean, prior_stds, obs, fltr, Tf, Nf,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_compute_hessian_latent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); /* … */ __pyx_t_2 = PyTuple_New(15); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_init_fltr); __Pyx_GIVEREF(__pyx_v_init_fltr); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_init_fltr); __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_mean); __Pyx_GIVEREF(__pyx_v_prior_mean); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_v_prior_mean); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_2, 5, __pyx_v_obs); __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_2, 7, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_2, 8, __pyx_v_Nf); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_2, 9, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_tangent); __Pyx_GIVEREF(__pyx_v_tangent); PyTuple_SET_ITEM(__pyx_t_2, 10, __pyx_v_tangent); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_2, 11, __pyx_v_infer_scale_parameter); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_2, 12, __pyx_v_eps); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_2, 13, __pyx_v_obs0); __Pyx_INCREF(__pyx_v_fltr0); __Pyx_GIVEREF(__pyx_v_fltr0); PyTuple_SET_ITEM(__pyx_t_2, 14, __pyx_v_fltr0); /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1418, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_hessian = __pyx_t_4; __pyx_t_4 = 0;
+1419: contactMatrix, tangent, infer_scale_parameter, eps, obs0, fltr0, fd_method=fd_method)
__pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1419, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fd_method, __pyx_v_fd_method) < 0) __PYX_ERR(0, 1419, __pyx_L1_error)
+1420: return np.sqrt(np.diagonal(np.linalg.inv(hessian)))
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_diagonal); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_linalg); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_inv); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_v_hessian) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_hessian); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_4 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1420, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
1421:
1422:
+1423: def log_G_evidence_latent(self, param_keys, init_fltr, maps, prior_mean, prior_stds, obs, fltr, Tf, Nf, contactMatrix,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_55log_G_evidence_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_54log_G_evidence_latent[] = "Compute the evidence using a Laplace approximation at the MAP estimate.";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_55log_G_evidence_latent(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_param_keys = 0;
PyObject *__pyx_v_init_fltr = 0;
PyObject *__pyx_v_maps = 0;
PyObject *__pyx_v_prior_mean = 0;
PyObject *__pyx_v_prior_stds = 0;
PyObject *__pyx_v_obs = 0;
PyObject *__pyx_v_fltr = 0;
PyObject *__pyx_v_Tf = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_v_eps = 0;
PyObject *__pyx_v_obs0 = 0;
PyObject *__pyx_v_fltr0 = 0;
PyObject *__pyx_v_fd_method = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("log_G_evidence_latent (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_param_keys,&__pyx_n_s_init_fltr,&__pyx_n_s_maps,&__pyx_n_s_prior_mean,&__pyx_n_s_prior_stds,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_tangent,&__pyx_n_s_infer_scale_parameter,&__pyx_n_s_eps,&__pyx_n_s_obs0,&__pyx_n_s_fltr0,&__pyx_n_s_fd_method,0};
PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_54log_G_evidence_latent(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_param_keys, PyObject *__pyx_v_init_fltr, PyObject *__pyx_v_maps, PyObject *__pyx_v_prior_mean, PyObject *__pyx_v_prior_stds, PyObject *__pyx_v_obs, PyObject *__pyx_v_fltr, PyObject *__pyx_v_Tf, PyObject *__pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_tangent, PyObject *__pyx_v_infer_scale_parameter, PyObject *__pyx_v_eps, PyObject *__pyx_v_obs0, PyObject *__pyx_v_fltr0, PyObject *__pyx_v_fd_method) {
double __pyx_v_logP_MAPs;
Py_ssize_t __pyx_v_k;
Py_ssize_t __pyx_v_param_dim;
PyObject *__pyx_v_bounds = NULL;
PyObject *__pyx_v_flat_maps = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_flat_prior_mean = NULL;
PyObject *__pyx_v_flat_prior_stds = NULL;
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_scale = NULL;
PyObject *__pyx_v_inits = NULL;
PyObject *__pyx_v_x0 = NULL;
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_A = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("log_G_evidence_latent", 0);
__Pyx_INCREF(__pyx_v_fltr);
__Pyx_INCREF(__pyx_v_obs0);
__Pyx_INCREF(__pyx_v_fltr0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_AddTraceback("pyross.inference.SIR_type.log_G_evidence_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_bounds);
__Pyx_XDECREF(__pyx_v_flat_maps);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_flat_prior_mean);
__Pyx_XDECREF(__pyx_v_flat_prior_stds);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_scale);
__Pyx_XDECREF(__pyx_v_inits);
__Pyx_XDECREF(__pyx_v_x0);
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_A);
__Pyx_XDECREF(__pyx_v_fltr);
__Pyx_XDECREF(__pyx_v_obs0);
__Pyx_XDECREF(__pyx_v_fltr0);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1424: tangent=False, infer_scale_parameter=False, eps=1.e-3, obs0=None, fltr0=None, fd_method="central"):
values[10] = ((PyObject *)Py_False);
values[11] = ((PyObject *)Py_False);
values[12] = ((PyObject *)__pyx_float_1_eneg_3);
values[13] = ((PyObject *)Py_None);
values[14] = ((PyObject *)Py_None);
values[15] = ((PyObject *)__pyx_n_u_central);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
CYTHON_FALLTHROUGH;
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_param_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, 1); __PYX_ERR(0, 1423, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, 2); __PYX_ERR(0, 1423, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_mean)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, 3); __PYX_ERR(0, 1423, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_prior_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, 4); __PYX_ERR(0, 1423, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, 5); __PYX_ERR(0, 1423, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, 6); __PYX_ERR(0, 1423, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (likely((values[7] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, 7); __PYX_ERR(0, 1423, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 8:
if (likely((values[8] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, 8); __PYX_ERR(0, 1423, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 9:
if (likely((values[9] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, 9); __PYX_ERR(0, 1423, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 10:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[10] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 11:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter);
if (value) { values[11] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 12:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_eps);
if (value) { values[12] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 13:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs0);
if (value) { values[13] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 14:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr0);
if (value) { values[14] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 15:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fd_method);
if (value) { values[15] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "log_G_evidence_latent") < 0)) __PYX_ERR(0, 1423, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
CYTHON_FALLTHROUGH;
case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
CYTHON_FALLTHROUGH;
case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
CYTHON_FALLTHROUGH;
case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
CYTHON_FALLTHROUGH;
case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
CYTHON_FALLTHROUGH;
case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
CYTHON_FALLTHROUGH;
case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_param_keys = values[0];
__pyx_v_init_fltr = values[1];
__pyx_v_maps = values[2];
__pyx_v_prior_mean = values[3];
__pyx_v_prior_stds = values[4];
__pyx_v_obs = values[5];
__pyx_v_fltr = values[6];
__pyx_v_Tf = values[7];
__pyx_v_Nf = values[8];
__pyx_v_contactMatrix = values[9];
__pyx_v_tangent = values[10];
__pyx_v_infer_scale_parameter = values[11];
__pyx_v_eps = values[12];
__pyx_v_obs0 = values[13];
__pyx_v_fltr0 = values[14];
__pyx_v_fd_method = values[15];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("log_G_evidence_latent", 0, 10, 16, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1423, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.log_G_evidence_latent", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_54log_G_evidence_latent(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_param_keys, __pyx_v_init_fltr, __pyx_v_maps, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_tangent, __pyx_v_infer_scale_parameter, __pyx_v_eps, __pyx_v_obs0, __pyx_v_fltr0, __pyx_v_fd_method);
1425: """Compute the evidence using a Laplace approximation at the MAP estimate."""
1426: cdef double logP_MAPs
1427: cdef Py_ssize_t k
1428:
+1429: param_dim = len(param_keys)
__pyx_t_1 = PyObject_Length(__pyx_v_param_keys); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1429, __pyx_L1_error) __pyx_v_param_dim = __pyx_t_1;
+1430: fltr = pyross.utils.process_fltr(fltr, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_fltr, __pyx_v_Nf}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1430, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_fltr, __pyx_v_Nf}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1430, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_Nf); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1430, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_fltr, __pyx_t_2); __pyx_t_2 = 0;
1431:
+1432: if obs0 is None or fltr0 is None:
__pyx_t_8 = (__pyx_v_obs0 == Py_None);
__pyx_t_9 = (__pyx_t_8 != 0);
if (!__pyx_t_9) {
} else {
__pyx_t_7 = __pyx_t_9;
goto __pyx_L4_bool_binop_done;
}
__pyx_t_9 = (__pyx_v_fltr0 == Py_None);
__pyx_t_8 = (__pyx_t_9 != 0);
__pyx_t_7 = __pyx_t_8;
__pyx_L4_bool_binop_done:;
if (__pyx_t_7) {
/* … */
}
1433: # Use the same filter and observation for initial condition as for the rest of the trajectory, unless specified otherwise
+1434: obs0=obs[0]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_obs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1434, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_obs0, __pyx_t_2); __pyx_t_2 = 0;
+1435: fltr0=fltr[0]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_fltr, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1435, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF_SET(__pyx_v_fltr0, __pyx_t_2); __pyx_t_2 = 0;
1436:
+1437: bounds = np.zeros((len(maps), 2)) # Create dummy bounds to pass to flatten function.
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = PyObject_Length(__pyx_v_maps); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1437, __pyx_L1_error) __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_int_2); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_bounds = __pyx_t_2; __pyx_t_2 = 0;
+1438: flat_maps, _, _, _, _, _ \
__pyx_v_flat_maps = __pyx_t_6; __pyx_t_6 = 0; __pyx_v__ = __pyx_t_3; __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_12); __pyx_t_12 = 0;
+1439: = self._flatten_parameters(maps, prior_stds, bounds, infer_scale_parameter)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1439, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_maps, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1439, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_3 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_5, __pyx_v_infer_scale_parameter); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1438, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); __pyx_t_4 = PyList_GET_ITEM(sequence, 2); __pyx_t_10 = PyList_GET_ITEM(sequence, 3); __pyx_t_11 = PyList_GET_ITEM(sequence, 4); __pyx_t_12 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_12); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_6,&__pyx_t_3,&__pyx_t_4,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1438, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_6,&__pyx_t_3,&__pyx_t_4,&__pyx_t_10,&__pyx_t_11,&__pyx_t_12}; __pyx_t_13 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 6) < 0) __PYX_ERR(0, 1438, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1438, __pyx_L1_error) __pyx_L7_unpacking_done:; }
+1440: flat_prior_mean, flat_prior_stds, _, _, _, _ \
__pyx_v_flat_prior_mean = __pyx_t_12; __pyx_t_12 = 0; __pyx_v_flat_prior_stds = __pyx_t_10; __pyx_t_10 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v__, __pyx_t_6); __pyx_t_6 = 0;
+1441: = self._flatten_parameters(prior_mean, prior_stds, bounds, infer_scale_parameter)
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_flatten_parameters); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_11 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1441, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_11, __pyx_v_prior_mean, __pyx_v_prior_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1441, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_10 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_v_prior_mean); __Pyx_GIVEREF(__pyx_v_prior_mean); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_v_prior_mean); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_bounds); __Pyx_GIVEREF(__pyx_v_bounds); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_5, __pyx_v_bounds); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_5, __pyx_v_infer_scale_parameter); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1441, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 6)) { if (size > 6) __Pyx_RaiseTooManyValuesError(6); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1440, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); __pyx_t_11 = PyTuple_GET_ITEM(sequence, 2); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 3); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 4); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 5); } else { __pyx_t_12 = PyList_GET_ITEM(sequence, 0); __pyx_t_10 = PyList_GET_ITEM(sequence, 1); __pyx_t_11 = PyList_GET_ITEM(sequence, 2); __pyx_t_4 = PyList_GET_ITEM(sequence, 3); __pyx_t_3 = PyList_GET_ITEM(sequence, 4); __pyx_t_6 = PyList_GET_ITEM(sequence, 5); } __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); #else { Py_ssize_t i; PyObject** temps[6] = {&__pyx_t_12,&__pyx_t_10,&__pyx_t_11,&__pyx_t_4,&__pyx_t_3,&__pyx_t_6}; for (i=0; i < 6; i++) { PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(0, 1440, __pyx_L1_error) __Pyx_GOTREF(item); *(temps[i]) = item; } } #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; PyObject** temps[6] = {&__pyx_t_12,&__pyx_t_10,&__pyx_t_11,&__pyx_t_4,&__pyx_t_3,&__pyx_t_6}; __pyx_t_13 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_13)->tp_iternext; for (index=0; index < 6; index++) { PyObject* item = __pyx_t_14(__pyx_t_13); if (unlikely(!item)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(item); *(temps[index]) = item; } if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_13), 6) < 0) __PYX_ERR(0, 1440, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1440, __pyx_L1_error) __pyx_L9_unpacking_done:; }
1442:
+1443: s, scale = pyross.utils.make_log_norm_dist(flat_prior_mean, flat_prior_stds)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyross); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_make_log_norm_dist); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_flat_prior_mean, __pyx_v_flat_prior_stds}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_flat_prior_mean); __Pyx_GIVEREF(__pyx_v_flat_prior_mean); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_flat_prior_mean); __Pyx_INCREF(__pyx_v_flat_prior_stds); __Pyx_GIVEREF(__pyx_v_flat_prior_stds); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_flat_prior_stds); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1443, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1443, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_14 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_14(__pyx_t_3); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_4 = __pyx_t_14(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L10_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_14(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1443, __pyx_L1_error) __pyx_t_14 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L11_unpacking_done; __pyx_L10_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1443, __pyx_L1_error) __pyx_L11_unpacking_done:; } __pyx_v_s = __pyx_t_6; __pyx_t_6 = 0; __pyx_v_scale = __pyx_t_4; __pyx_t_4 = 0;
+1444: inits = np.copy(maps[param_dim:])
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_copy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_maps, __pyx_v_param_dim, 0, NULL, NULL, NULL, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1444, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_inits = __pyx_t_2; __pyx_t_2 = 0;
+1445: x0 = self.fill_initial_conditions(inits, obs0, init_fltr, fltr0)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_initial_conditions); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1445, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_inits, __pyx_v_obs0, __pyx_v_init_fltr, __pyx_v_fltr0}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1445, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_v_inits, __pyx_v_obs0, __pyx_v_init_fltr, __pyx_v_fltr0}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1445, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_3 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1445, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_v_inits); __Pyx_GIVEREF(__pyx_v_inits); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_5, __pyx_v_inits); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_5, __pyx_v_obs0); __Pyx_INCREF(__pyx_v_init_fltr); __Pyx_GIVEREF(__pyx_v_init_fltr); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_5, __pyx_v_init_fltr); __Pyx_INCREF(__pyx_v_fltr0); __Pyx_GIVEREF(__pyx_v_fltr0); PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_5, __pyx_v_fltr0); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1445, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_x0 = __pyx_t_2; __pyx_t_2 = 0;
+1446: parameters = self.fill_params_dict(param_keys, maps)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fill_params_dict); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_param_keys, __pyx_v_maps}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1446, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_param_keys, __pyx_v_maps}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1446, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_v_maps); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1446, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_parameters = __pyx_t_2; __pyx_t_2 = 0;
+1447: logP_MAPs = -self.minus_logp_red(parameters, x0, obs[1:], fltr[1:], Tf, Nf, contactMatrix)
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_minus_logp_red); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_obs, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_fltr, 1, 0, NULL, NULL, &__pyx_slice__10, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[8] = {__pyx_t_11, __pyx_v_parameters, __pyx_v_x0, __pyx_t_4, __pyx_t_3, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 7+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1447, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[8] = {__pyx_t_11, __pyx_v_parameters, __pyx_v_x0, __pyx_t_4, __pyx_t_3, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_5, 7+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1447, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_10 = PyTuple_New(7+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_11) { __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_v_parameters); __Pyx_INCREF(__pyx_v_x0); __Pyx_GIVEREF(__pyx_v_x0); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_v_x0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_5, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_5, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_10, 5+__pyx_t_5, __pyx_v_Nf); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_10, 6+__pyx_t_5, __pyx_v_contactMatrix); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Negative(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1447, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_15 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_15 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1447, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_logP_MAPs = __pyx_t_15;
+1448: logP_MAPs += np.sum(lognorm.logpdf(flat_maps, s, scale=scale))
__pyx_t_6 = PyFloat_FromDouble(__pyx_v_logP_MAPs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_sum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_lognorm); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_logpdf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_flat_maps); __Pyx_GIVEREF(__pyx_v_flat_maps); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_flat_maps); __Pyx_INCREF(__pyx_v_s); __Pyx_GIVEREF(__pyx_v_s); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_s); __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_scale, __pyx_v_scale) < 0) __PYX_ERR(0, 1448, __pyx_L1_error) __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_11, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_12); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_15 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_15 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1448, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_logP_MAPs = __pyx_t_15;
1449:
+1450: k = flat_prior_mean.shape[0]
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_flat_prior_mean, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1450, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_k = __pyx_t_1;
+1451: A = self.compute_hessian_latent(param_keys, init_fltr, maps, prior_mean, prior_stds, obs, fltr, Tf, Nf,
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_compute_hessian_latent); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); /* … */ __pyx_t_3 = PyTuple_New(15); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_param_keys); __Pyx_GIVEREF(__pyx_v_param_keys); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_param_keys); __Pyx_INCREF(__pyx_v_init_fltr); __Pyx_GIVEREF(__pyx_v_init_fltr); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_init_fltr); __Pyx_INCREF(__pyx_v_maps); __Pyx_GIVEREF(__pyx_v_maps); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_maps); __Pyx_INCREF(__pyx_v_prior_mean); __Pyx_GIVEREF(__pyx_v_prior_mean); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_prior_mean); __Pyx_INCREF(__pyx_v_prior_stds); __Pyx_GIVEREF(__pyx_v_prior_stds); PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_prior_stds); __Pyx_INCREF(__pyx_v_obs); __Pyx_GIVEREF(__pyx_v_obs); PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_obs); __Pyx_INCREF(__pyx_v_fltr); __Pyx_GIVEREF(__pyx_v_fltr); PyTuple_SET_ITEM(__pyx_t_3, 6, __pyx_v_fltr); __Pyx_INCREF(__pyx_v_Tf); __Pyx_GIVEREF(__pyx_v_Tf); PyTuple_SET_ITEM(__pyx_t_3, 7, __pyx_v_Tf); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_3, 8, __pyx_v_Nf); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_3, 9, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_tangent); __Pyx_GIVEREF(__pyx_v_tangent); PyTuple_SET_ITEM(__pyx_t_3, 10, __pyx_v_tangent); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyTuple_SET_ITEM(__pyx_t_3, 11, __pyx_v_infer_scale_parameter); __Pyx_INCREF(__pyx_v_eps); __Pyx_GIVEREF(__pyx_v_eps); PyTuple_SET_ITEM(__pyx_t_3, 12, __pyx_v_eps); __Pyx_INCREF(__pyx_v_obs0); __Pyx_GIVEREF(__pyx_v_obs0); PyTuple_SET_ITEM(__pyx_t_3, 13, __pyx_v_obs0); __Pyx_INCREF(__pyx_v_fltr0); __Pyx_GIVEREF(__pyx_v_fltr0); PyTuple_SET_ITEM(__pyx_t_3, 14, __pyx_v_fltr0); /* … */ __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1451, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_A = __pyx_t_12; __pyx_t_12 = 0;
+1452: contactMatrix, tangent, infer_scale_parameter, eps, obs0, fltr0, fd_method=fd_method)
__pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1452, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_fd_method, __pyx_v_fd_method) < 0) __PYX_ERR(0, 1452, __pyx_L1_error)
+1453: return logP_MAPs - 0.5*np.log(np.linalg.det(A)) + k/2*np.log(2*np.pi)
__Pyx_XDECREF(__pyx_r); __pyx_t_12 = PyFloat_FromDouble(__pyx_v_logP_MAPs); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_linalg); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_det); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_11))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_3 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_v_A) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_v_A); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_6 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_11, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Subtract(__pyx_t_12, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_k / 2)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_log); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_pi); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Multiply(__pyx_int_2, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); } } __pyx_t_12 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_11, __pyx_t_10, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_3); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyNumber_Multiply(__pyx_t_2, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyNumber_Add(__pyx_t_6, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1453, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_r = __pyx_t_12; __pyx_t_12 = 0; goto __pyx_L0;
1454:
+1455: def minus_logp_red(self, parameters, double [:] x0, np.ndarray obs,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_57minus_logp_red(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_56minus_logp_red[] = "Computes -logp for a latent trajectory\n\n Parameters\n ----------\n parameters: dict\n A dictionary of parameter values, same as the ones required for initialisation.\n x0: numpy.array\n Initial conditions\n obs: numpy.array\n The observed trajectory without the initial datapoint\n fltr: boolean sequence or array\n True for observed and False for unobserved.\n e.g. if only Is is known for SIR with one age group, fltr = [False, False, True]\n Tf: float\n The total time of the trajectory\n Nf: int\n The total number of datapoints\n contactMatrix: callable\n A function that returns the contact matrix at time t (input).\n tangent: bool, optional\n Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.\n\n Returns\n -------\n minus_logp: float\n -log(p) for the observed trajectory with the given parameters and initial conditions\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_57minus_logp_red(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_obs = 0;
PyArrayObject *__pyx_v_fltr = 0;
double __pyx_v_Tf;
int __pyx_v_Nf;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_tangent = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minus_logp_red (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_x0,&__pyx_n_s_obs,&__pyx_n_s_fltr,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_contactMatrix,&__pyx_n_s_tangent,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
/* … */
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_56minus_logp_red(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_parameters, __Pyx_memviewslice __pyx_v_x0, PyArrayObject *__pyx_v_obs, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, int __pyx_v_Nf, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_tangent) {
CYTHON_UNUSED Py_ssize_t __pyx_v_nClass;
PyObject *__pyx_v_model = NULL;
double __pyx_v_minus_logp;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("minus_logp_red", 0);
__Pyx_INCREF((PyObject *)__pyx_v_obs);
__Pyx_INCREF((PyObject *)__pyx_v_fltr);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.minus_logp_red", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_model);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XDECREF((PyObject *)__pyx_v_obs);
__Pyx_XDECREF((PyObject *)__pyx_v_fltr);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+1456: np.ndarray fltr, double Tf, int Nf, contactMatrix, tangent=False):
values[7] = ((PyObject *)Py_False);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 7, 8, 1); __PYX_ERR(0, 1455, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 7, 8, 2); __PYX_ERR(0, 1455, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 7, 8, 3); __PYX_ERR(0, 1455, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 7, 8, 4); __PYX_ERR(0, 1455, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 7, 8, 5); __PYX_ERR(0, 1455, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 7, 8, 6); __PYX_ERR(0, 1455, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tangent);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "minus_logp_red") < 0)) __PYX_ERR(0, 1455, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 1455, __pyx_L3_error)
__pyx_v_obs = ((PyArrayObject *)values[2]);
__pyx_v_fltr = ((PyArrayObject *)values[3]);
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1456, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_Nf == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1456, __pyx_L3_error)
__pyx_v_contactMatrix = values[6];
__pyx_v_tangent = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("minus_logp_red", 0, 7, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1455, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.minus_logp_red", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_obs), __pyx_ptype_5numpy_ndarray, 1, "obs", 0))) __PYX_ERR(0, 1455, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 1456, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_56minus_logp_red(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_parameters, __pyx_v_x0, __pyx_v_obs, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_contactMatrix, __pyx_v_tangent);
1457: '''Computes -logp for a latent trajectory
1458:
1459: Parameters
1460: ----------
1461: parameters: dict
1462: A dictionary of parameter values, same as the ones required for initialisation.
1463: x0: numpy.array
1464: Initial conditions
1465: obs: numpy.array
1466: The observed trajectory without the initial datapoint
1467: fltr: boolean sequence or array
1468: True for observed and False for unobserved.
1469: e.g. if only Is is known for SIR with one age group, fltr = [False, False, True]
1470: Tf: float
1471: The total time of the trajectory
1472: Nf: int
1473: The total number of datapoints
1474: contactMatrix: callable
1475: A function that returns the contact matrix at time t (input).
1476: tangent: bool, optional
1477: Set to True to do inference in tangent space (might be less robust but a lot faster). Default is False.
1478:
1479: Returns
1480: -------
1481: minus_logp: float
1482: -log(p) for the observed trajectory with the given parameters and initial conditions
1483: '''
1484:
1485: cdef double minus_log_p
+1486: cdef Py_ssize_t nClass=int(self.dim/self.M)
__pyx_v_nClass = (__pyx_v_self->dim / __pyx_v_self->M);
+1487: fltr = pyross.utils.process_fltr(fltr, Nf-1)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_process_fltr); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_From_long((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_fltr), __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1487, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_fltr), __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1487, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_fltr)); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_fltr)); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1487, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1487, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_fltr, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
+1488: obs = pyross.utils.process_obs(obs, Nf-1)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_process_obs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyInt_From_long((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_obs), __pyx_t_6}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_obs), __pyx_t_6}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(((PyObject *)__pyx_v_obs)); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_5, ((PyObject *)__pyx_v_obs)); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_5, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1488, __pyx_L1_error) __Pyx_DECREF_SET(__pyx_v_obs, ((PyArrayObject *)__pyx_t_1)); __pyx_t_1 = 0;
+1489: self.set_params(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1490: model = self.make_det_model(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_det_model); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1490, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_model = __pyx_t_1; __pyx_t_1 = 0;
+1491: minus_logp = self.obtain_log_p_for_traj_matrix_fltr(x0, obs, fltr, Tf, Nf, model, contactMatrix, tangent)
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_obs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1491, __pyx_L1_error) __pyx_t_9.__pyx_n = 1; __pyx_t_9.tangent = __pyx_v_tangent; __pyx_t_8 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_log_p_for_traj_matrix_fltr(__pyx_v_self, __pyx_v_x0, __pyx_t_7, __pyx_v_fltr, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix, &__pyx_t_9); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __pyx_v_minus_logp = __pyx_t_8;
+1492: return minus_logp
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_minus_logp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1493:
+1494: def set_lyapunov_method(self, lyapunov_method):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_59set_lyapunov_method(PyObject *__pyx_v_self, PyObject *__pyx_v_lyapunov_method); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_58set_lyapunov_method[] = "Sets the method used for deterministic integration for the SIR_type model\n\n Parameters\n ----------\n det_method: str\n The name of the integration method. Choose between 'LSODA', 'RK45', 'RK2' and 'euler'.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_59set_lyapunov_method(PyObject *__pyx_v_self, PyObject *__pyx_v_lyapunov_method) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_lyapunov_method (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_58set_lyapunov_method(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyObject *)__pyx_v_lyapunov_method));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_58set_lyapunov_method(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_lyapunov_method) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_lyapunov_method", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.set_lyapunov_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1495: '''Sets the method used for deterministic integration for the SIR_type model
1496:
1497: Parameters
1498: ----------
1499: det_method: str
1500: The name of the integration method. Choose between 'LSODA', 'RK45', 'RK2' and 'euler'.
1501: '''
+1502: if lyapunov_method not in ['LSODA', 'RK45', 'RK2', 'euler']:
__Pyx_INCREF(__pyx_v_lyapunov_method); __pyx_t_1 = __pyx_v_lyapunov_method; __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_LSODA, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1502, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_RK45, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1502, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_RK2, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1502, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_euler, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1502, __pyx_L1_error) __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+1503: raise Exception('det_method not implemented. Please see our documentation for the available options')
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1503, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 1503, __pyx_L1_error) /* … */ __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_u_det_method_not_implemented_Pleas); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 1503, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__29); __Pyx_GIVEREF(__pyx_tuple__29);
+1504: self.lyapunov_method=lyapunov_method
if (!(likely(PyUnicode_CheckExact(__pyx_v_lyapunov_method))||((__pyx_v_lyapunov_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_lyapunov_method)->tp_name), 0))) __PYX_ERR(0, 1504, __pyx_L1_error) __pyx_t_1 = __pyx_v_lyapunov_method; __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->lyapunov_method); __Pyx_DECREF(__pyx_v_self->lyapunov_method); __pyx_v_self->lyapunov_method = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
1505:
+1506: def set_det_method(self, det_method):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_61set_det_method(PyObject *__pyx_v_self, PyObject *__pyx_v_det_method); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_60set_det_method[] = "Sets the method used for deterministic integration for the SIR_type model\n\n Parameters\n ----------\n det_method: str\n The name of the integration method. Choose between 'LSODA', 'RK45', 'RK2' and 'euler'.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_61set_det_method(PyObject *__pyx_v_self, PyObject *__pyx_v_det_method) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_method (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_60set_det_method(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyObject *)__pyx_v_det_method));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_60set_det_method(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_det_method) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_det_method", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.set_det_method", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1507: '''Sets the method used for deterministic integration for the SIR_type model
1508:
1509: Parameters
1510: ----------
1511: det_method: str
1512: The name of the integration method. Choose between 'LSODA', 'RK45', 'RK2' and 'euler'.
1513: '''
+1514: if det_method not in ['LSODA', 'RK45', 'RK2', 'euler']:
__Pyx_INCREF(__pyx_v_det_method); __pyx_t_1 = __pyx_v_det_method; __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_LSODA, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1514, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_RK45, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1514, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_RK2, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1514, __pyx_L1_error) if (__pyx_t_3) { } else { __pyx_t_2 = __pyx_t_3; goto __pyx_L4_bool_binop_done; } __pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_n_u_euler, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1514, __pyx_L1_error) __pyx_t_2 = __pyx_t_3; __pyx_L4_bool_binop_done:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_3 = (__pyx_t_2 != 0); if (unlikely(__pyx_t_3)) { /* … */ }
+1515: raise Exception('det_method not implemented. Please see our documentation for the available options')
__pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1515, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_ERR(0, 1515, __pyx_L1_error)
+1516: self.det_method=det_method
if (!(likely(PyUnicode_CheckExact(__pyx_v_det_method))||((__pyx_v_det_method) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "unicode", Py_TYPE(__pyx_v_det_method)->tp_name), 0))) __PYX_ERR(0, 1516, __pyx_L1_error) __pyx_t_1 = __pyx_v_det_method; __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->det_method); __Pyx_DECREF(__pyx_v_self->det_method); __pyx_v_self->det_method = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
1517:
+1518: def make_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_63make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_62make_det_model[] = "Returns a determinisitic model of the same epidemiological class and same parameters\n\n Parameters\n ----------\n parameters: dict\n A dictionary of parameter values, same as the ones required for initialisation.\n\n Returns\n -------\n det_model: a class in pyross.deterministic\n A determinisitic model of the same epidemiological class and same parameters\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_63make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_62make_det_model(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_62make_det_model(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model", 0);
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1519: '''Returns a determinisitic model of the same epidemiological class and same parameters
1520:
1521: Parameters
1522: ----------
1523: parameters: dict
1524: A dictionary of parameter values, same as the ones required for initialisation.
1525:
1526: Returns
1527: -------
1528: det_model: a class in pyross.deterministic
1529: A determinisitic model of the same epidemiological class and same parameters
1530: '''
1531: pass # to be implemented in subclass
1532:
+1533: def make_params_dict(self, params=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_65make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_65make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
CYTHON_UNUSED PyObject *__pyx_v_params = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,0};
PyObject* values[1] = {0};
values[0] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params);
if (value) { values[0] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "make_params_dict") < 0)) __PYX_ERR(0, 1533, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("make_params_dict", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1533, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_64make_params_dict(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_64make_params_dict(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_params) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1534: pass # to be implemented in subclass
1535:
+1536: def fill_params_dict(self, keys, params):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_67fill_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_66fill_params_dict[] = "Returns a full dictionary for epidemiological parameters with some changed values\n\n Parameters\n ----------\n keys: list of String\n A list of names of parameters to be changed.\n params: numpy.array of list\n An array of the same size as keys for the updated value.\n\n Returns\n -------\n full_parameters: dict\n A dictionary of epidemiological parameters.\n For parameter names specified in `keys`, set the values to be the ones in `params`;\n for the others, use the values stored in the class.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_67fill_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_v_params = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_params_dict (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_keys,&__pyx_n_s_params,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("fill_params_dict", 1, 2, 2, 1); __PYX_ERR(0, 1536, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fill_params_dict") < 0)) __PYX_ERR(0, 1536, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_keys = values[0];
__pyx_v_params = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("fill_params_dict", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1536, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.fill_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_66fill_params_dict(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_keys, __pyx_v_params);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_66fill_params_dict(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_keys, PyObject *__pyx_v_params) {
PyObject *__pyx_v_full_parameters = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_k = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SIR_type.fill_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_full_parameters);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1537: '''Returns a full dictionary for epidemiological parameters with some changed values
1538:
1539: Parameters
1540: ----------
1541: keys: list of String
1542: A list of names of parameters to be changed.
1543: params: numpy.array of list
1544: An array of the same size as keys for the updated value.
1545:
1546: Returns
1547: -------
1548: full_parameters: dict
1549: A dictionary of epidemiological parameters.
1550: For parameter names specified in `keys`, set the values to be the ones in `params`;
1551: for the others, use the values stored in the class.
1552: '''
+1553: full_parameters = self.make_params_dict()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_params_dict); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1553, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_full_parameters = __pyx_t_1; __pyx_t_1 = 0;
+1554: for (i, k) in enumerate(keys):
__Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_keys)) || PyTuple_CheckExact(__pyx_v_keys)) { __pyx_t_2 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1554, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1554, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1554, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_5(__pyx_t_2); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1554, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3); __pyx_t_3 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1554, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_3; __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1555: full_parameters[k] = params[i]
__pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_params, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1555, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyObject_SetItem(__pyx_v_full_parameters, __pyx_v_k, __pyx_t_3) < 0)) __PYX_ERR(0, 1555, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+1556: return full_parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_full_parameters); __pyx_r = __pyx_v_full_parameters; goto __pyx_L0;
1557:
+1558: def fill_initial_conditions(self, np.ndarray partial_inits, double [:] obs_inits,
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_69fill_initial_conditions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_68fill_initial_conditions[] = "Returns the full initial condition given partial initial conditions and the observed data\n\n Parameters\n ----------\n partial_inits: 1d np.array\n Partial initial conditions.\n obs_inits: 1d np.array\n The observed initial conditions.\n init_fltr: 1d np.array\n A vector boolean fltr that yields the partial initis given full initial conditions.\n fltr: 2d np.array\n A matrix fltr that yields the observed data from full data. Same as the one used for latent_infer_parameters.\n\n Returns\n -------\n x0: 1d np.array\n The full initial condition.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_69fill_initial_conditions(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyArrayObject *__pyx_v_partial_inits = 0;
__Pyx_memviewslice __pyx_v_obs_inits = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_init_fltr = 0;
PyArrayObject *__pyx_v_fltr = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_initial_conditions (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_partial_inits,&__pyx_n_s_obs_inits,&__pyx_n_s_init_fltr,&__pyx_n_s_fltr,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_partial_inits)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_obs_inits)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("fill_initial_conditions", 1, 4, 4, 1); __PYX_ERR(0, 1558, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_init_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("fill_initial_conditions", 1, 4, 4, 2); __PYX_ERR(0, 1558, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fltr)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("fill_initial_conditions", 1, 4, 4, 3); __PYX_ERR(0, 1558, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fill_initial_conditions") < 0)) __PYX_ERR(0, 1558, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
}
__pyx_v_partial_inits = ((PyArrayObject *)values[0]);
__pyx_v_obs_inits = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_obs_inits.memview)) __PYX_ERR(0, 1558, __pyx_L3_error)
__pyx_v_init_fltr = ((PyArrayObject *)values[2]);
__pyx_v_fltr = ((PyArrayObject *)values[3]);
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("fill_initial_conditions", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1558, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.fill_initial_conditions", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_partial_inits), __pyx_ptype_5numpy_ndarray, 1, "partial_inits", 0))) __PYX_ERR(0, 1558, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_init_fltr), __pyx_ptype_5numpy_ndarray, 1, "init_fltr", 0))) __PYX_ERR(0, 1559, __pyx_L1_error)
if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fltr), __pyx_ptype_5numpy_ndarray, 1, "fltr", 0))) __PYX_ERR(0, 1559, __pyx_L1_error)
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_68fill_initial_conditions(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_partial_inits, __pyx_v_obs_inits, __pyx_v_init_fltr, __pyx_v_fltr);
/* function exit code */
goto __pyx_L0;
__pyx_L1_error:;
__pyx_r = NULL;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_68fill_initial_conditions(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyArrayObject *__pyx_v_partial_inits, __Pyx_memviewslice __pyx_v_obs_inits, PyArrayObject *__pyx_v_init_fltr, PyArrayObject *__pyx_v_fltr) {
PyArrayObject *__pyx_v_x0 = 0;
__Pyx_memviewslice __pyx_v_z = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_unknown_inits = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_partial_inits_memview = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_initial_conditions", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.SIR_type.fill_initial_conditions", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_x0);
__PYX_XDEC_MEMVIEW(&__pyx_v_z, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_unknown_inits, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_partial_inits_memview, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_obs_inits, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1559: np.ndarray init_fltr, np.ndarray fltr):
1560: '''Returns the full initial condition given partial initial conditions and the observed data
1561:
1562: Parameters
1563: ----------
1564: partial_inits: 1d np.array
1565: Partial initial conditions.
1566: obs_inits: 1d np.array
1567: The observed initial conditions.
1568: init_fltr: 1d np.array
1569: A vector boolean fltr that yields the partial initis given full initial conditions.
1570: fltr: 2d np.array
1571: A matrix fltr that yields the observed data from full data. Same as the one used for latent_infer_parameters.
1572:
1573: Returns
1574: -------
1575: x0: 1d np.array
1576: The full initial condition.
1577: '''
1578:
1579: cdef:
+1580: np.ndarray x0=np.empty(self.dim, dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1580, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1580, __pyx_L1_error) __pyx_v_x0 = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+1581: double [:] z, unknown_inits, partial_inits_memview=partial_inits.astype(DTYPE)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_partial_inits), __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1581, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_partial_inits_memview = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+1582: z = np.subtract(obs_inits, np.dot(fltr[:, init_fltr], partial_inits_memview))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_subtract); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_obs_inits, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_dot); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__2); __Pyx_INCREF(((PyObject *)__pyx_v_init_fltr)); __Pyx_GIVEREF(((PyObject *)__pyx_v_init_fltr)); PyTuple_SET_ITEM(__pyx_t_6, 1, ((PyObject *)__pyx_v_init_fltr)); __pyx_t_8 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_fltr), __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_partial_inits_memview, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_6}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_6}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_6); __pyx_t_8 = 0; __pyx_t_6 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_1, __pyx_t_2}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_1, __pyx_t_2}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_2); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1582, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_z = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+1583: unknown_inits = np.linalg.solve(fltr[:, np.invert(init_fltr)], z)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linalg); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_solve); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_invert); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_11 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, ((PyObject *)__pyx_v_init_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_init_fltr)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_slice__2); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_fltr), __pyx_t_1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_z, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_11, __pyx_t_1}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_11, __pyx_t_1}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_10, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_10, __pyx_t_1); __pyx_t_11 = 0; __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1583, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_unknown_inits = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+1584: x0[init_fltr] = partial_inits_memview
__pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_partial_inits_memview, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1584, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_x0), ((PyObject *)__pyx_v_init_fltr), __pyx_t_4) < 0)) __PYX_ERR(0, 1584, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1585: x0[np.invert(init_fltr)] = unknown_inits
__pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_unknown_inits, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_invert); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, ((PyObject *)__pyx_v_init_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_init_fltr)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1585, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_x0), __pyx_t_3, __pyx_t_4) < 0)) __PYX_ERR(0, 1585, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1586: return x0
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_x0)); __pyx_r = ((PyObject *)__pyx_v_x0); goto __pyx_L0;
1587:
+1588: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_71set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_70set_params[] = "Sets epidemiological parameters used for evaluating -log(p)\n\n Parameters\n ----------\n parameters: dict\n A dictionary containing all epidemiological parameters.\n Same keys as the one used to initialise the class.\n\n Notes\n -----\n Can use `fill_params_dict` to generate the full dictionary if only a few parameters are changed\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_71set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_70set_params(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_70set_params(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1589: '''Sets epidemiological parameters used for evaluating -log(p)
1590:
1591: Parameters
1592: ----------
1593: parameters: dict
1594: A dictionary containing all epidemiological parameters.
1595: Same keys as the one used to initialise the class.
1596:
1597: Notes
1598: -----
1599: Can use `fill_params_dict` to generate the full dictionary if only a few parameters are changed
1600: '''
1601:
+1602: self.beta = pyross.utils.age_dep_rates(parameters['beta'], self.M, 'beta')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_beta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_beta}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_beta}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_beta); __Pyx_GIVEREF(__pyx_n_u_beta); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_beta); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1602, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->beta); __Pyx_DECREF(((PyObject *)__pyx_v_self->beta)); __pyx_v_self->beta = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+1603: self.gIa = pyross.utils.age_dep_rates(parameters['gIa'], self.M, 'gIa')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gIa); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gIa}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gIa}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gIa); __Pyx_GIVEREF(__pyx_n_u_gIa); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_n_u_gIa); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1603, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gIa); __Pyx_DECREF(((PyObject *)__pyx_v_self->gIa)); __pyx_v_self->gIa = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+1604: self.gIs = pyross.utils.age_dep_rates(parameters['gIs'], self.M, 'gIs')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gIs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_gIs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_gIs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gIs); __Pyx_GIVEREF(__pyx_n_u_gIs); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_n_u_gIs); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1604, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gIs); __Pyx_DECREF(((PyObject *)__pyx_v_self->gIs)); __pyx_v_self->gIs = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+1605: self.fsa = pyross.utils.age_dep_rates(parameters['fsa'], self.M, 'fsa')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_fsa); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_fsa}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_fsa}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_fsa); __Pyx_GIVEREF(__pyx_n_u_fsa); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_fsa); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1605, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->fsa); __Pyx_DECREF(((PyObject *)__pyx_v_self->fsa)); __pyx_v_self->fsa = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+1606: self.alpha = pyross.utils.age_dep_rates(parameters['alpha'], self.M, 'alpha')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_alpha); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_alpha}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_alpha}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_alpha); __Pyx_GIVEREF(__pyx_n_u_alpha); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_n_u_alpha); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1606, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->alpha); __Pyx_DECREF(((PyObject *)__pyx_v_self->alpha)); __pyx_v_self->alpha = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
1607:
1608:
+1609: cdef double obtain_log_p_for_traj(self, double [:, :] x, double Tf, int Nf, model, contactMatrix):
static double __pyx_f_6pyross_9inference_8SIR_type_obtain_log_p_for_traj(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_Tf, int __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
double __pyx_v_log_p;
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xf = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_dev = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_mean = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_ti = NULL;
PyObject *__pyx_v_tf = NULL;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_log_p_for_traj", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_17, 1);
__Pyx_WriteUnraisable("pyross.inference.SIR_type.obtain_log_p_for_traj", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xf, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_dev, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_mean, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__Pyx_XDECREF(__pyx_v_ti);
__Pyx_XDECREF(__pyx_v_tf);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1610: cdef:
+1611: double log_p = 0
__pyx_v_log_p = 0.0;
+1612: double [:] time_points = np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_Nf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1612, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1612, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1612, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 1612, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_time_points = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
1613: double [:] xi, xf, dev, mean
1614: double [:, :] cov
1615: Py_ssize_t i
+1616: for i in range(Nf-1):
__pyx_t_9 = (__pyx_v_Nf - 1);
__pyx_t_10 = __pyx_t_9;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
+1617: xi = x[i]
__pyx_t_8.data = __pyx_v_x.data;
__pyx_t_8.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_x.strides[0];
if ((0)) __PYX_ERR(0, 1617, __pyx_L1_error)
__pyx_t_8.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_8.shape[0] = __pyx_v_x.shape[1];
__pyx_t_8.strides[0] = __pyx_v_x.strides[1];
__pyx_t_8.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1);
__pyx_v_xi = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+1618: xf = x[i+1]
__pyx_t_8.data = __pyx_v_x.data;
__pyx_t_8.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
{
Py_ssize_t __pyx_tmp_idx = (__pyx_v_i + 1);
Py_ssize_t __pyx_tmp_stride = __pyx_v_x.strides[0];
if ((0)) __PYX_ERR(0, 1618, __pyx_L1_error)
__pyx_t_8.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_8.shape[0] = __pyx_v_x.shape[1];
__pyx_t_8.strides[0] = __pyx_v_x.strides[1];
__pyx_t_8.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xf, 1);
__pyx_v_xf = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+1619: ti = time_points[i]
__pyx_t_12 = __pyx_v_i;
__pyx_t_1 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_12 * __pyx_v_time_points.strides[0]) )))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1619, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_ti, __pyx_t_1);
__pyx_t_1 = 0;
+1620: tf = time_points[i+1]
__pyx_t_13 = (__pyx_v_i + 1);
__pyx_t_1 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_13 * __pyx_v_time_points.strides[0]) )))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1620, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XDECREF_SET(__pyx_v_tf, __pyx_t_1);
__pyx_t_1 = 0;
+1621: mean, cov = self.estimate_cond_mean_cov(xi, ti, tf, model, contactMatrix)
__pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_ti); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1621, __pyx_L1_error) __pyx_t_15 = __pyx_PyFloat_AsDouble(__pyx_v_tf); if (unlikely((__pyx_t_15 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1621, __pyx_L1_error) __pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->estimate_cond_mean_cov(__pyx_v_self, __pyx_v_xi, __pyx_t_14, __pyx_t_15, __pyx_v_model, __pyx_v_contactMatrix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1621, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_16 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_16(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_7 = __pyx_t_16(__pyx_t_4); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1621, __pyx_L1_error) __pyx_t_16 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_16 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1621, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 1621, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_17 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_17.memview)) __PYX_ERR(0, 1621, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_mean, 1); __pyx_v_mean = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_17; __pyx_t_17.memview = NULL; __pyx_t_17.data = NULL;
+1622: dev = np.subtract(xf, mean)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_subtract); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_xf, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_mean, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1622, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1622, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 1622, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_dev, 1); __pyx_v_dev = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+1623: log_p += self.log_cond_p(dev, cov)
__pyx_v_log_p = (__pyx_v_log_p + ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->log_cond_p(__pyx_v_self, __pyx_v_dev, __pyx_v_cov)); }
+1624: return -log_p
__pyx_r = (-__pyx_v_log_p); goto __pyx_L0;
1625:
+1626: cdef double obtain_log_p_for_traj_matrix_fltr(self, double [:] x0, double [:] obs_flattened, np.ndarray fltr,
static double __pyx_f_6pyross_9inference_8SIR_type_obtain_log_p_for_traj_matrix_fltr(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, __Pyx_memviewslice __pyx_v_obs_flattened, PyArrayObject *__pyx_v_fltr, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix, struct __pyx_opt_args_6pyross_9inference_8SIR_type_obtain_log_p_for_traj_matrix_fltr *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_XDECREF(__pyx_t_15);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_WriteUnraisable("pyross.inference.SIR_type.obtain_log_p_for_traj_matrix_fltr", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer);
__pyx_L2:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xm_red, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_dev, 1);
__Pyx_XDECREF((PyObject *)__pyx_v_cov_red);
__Pyx_XDECREF((PyObject *)__pyx_v_full_cov);
__Pyx_XDECREF(__pyx_v_full_fltr);
__Pyx_XDECREF(__pyx_v_cov_red_inv_dev);
__Pyx_XDECREF(__pyx_v_ldet);
__Pyx_XDECREF(__pyx_v_log_p);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_8SIR_type_obtain_log_p_for_traj_matrix_fltr {
int __pyx_n;
PyObject *tangent;
};
+1627: double Tf, Py_ssize_t Nf, model, contactMatrix, tangent=False):
PyObject *__pyx_v_tangent = ((PyObject *)Py_False);
Py_ssize_t __pyx_v_reduced_dim;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xm_red = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_dev = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_cov_red = 0;
PyArrayObject *__pyx_v_full_cov = 0;
PyObject *__pyx_v_full_fltr = NULL;
PyObject *__pyx_v_cov_red_inv_dev = NULL;
PyObject *__pyx_v_ldet = NULL;
PyObject *__pyx_v_log_p = NULL;
__Pyx_LocalBuf_ND __pyx_pybuffernd_cov_red;
__Pyx_Buffer __pyx_pybuffer_cov_red;
__Pyx_LocalBuf_ND __pyx_pybuffernd_full_cov;
__Pyx_Buffer __pyx_pybuffer_full_cov;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_log_p_for_traj_matrix_fltr", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_tangent = __pyx_optional_args->tangent;
}
}
__pyx_pybuffer_cov_red.pybuffer.buf = NULL;
__pyx_pybuffer_cov_red.refcount = 0;
__pyx_pybuffernd_cov_red.data = NULL;
__pyx_pybuffernd_cov_red.rcbuffer = &__pyx_pybuffer_cov_red;
__pyx_pybuffer_full_cov.pybuffer.buf = NULL;
__pyx_pybuffer_full_cov.refcount = 0;
__pyx_pybuffernd_full_cov.data = NULL;
__pyx_pybuffernd_full_cov.rcbuffer = &__pyx_pybuffer_full_cov;
1628: cdef:
+1629: Py_ssize_t reduced_dim=obs_flattened.shape[0]
__pyx_v_reduced_dim = (__pyx_v_obs_flattened.shape[0]);
1630: double [:, :] xm
1631: double [:] xm_red, dev
1632: np.ndarray[DTYPE_t, ndim=2] cov_red, full_cov
+1633: if tangent:
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_tangent); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1633, __pyx_L1_error) if (__pyx_t_1) { /* … */ goto __pyx_L3; }
+1634: xm, full_cov = self.obtain_full_mean_cov_tangent_space(x0, Tf, Nf, model, contactMatrix)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov_tangent_space(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1634, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(0, 1634, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1634, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1634, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1634, __pyx_L1_error) __pyx_v_xm = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __pyx_t_8 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer); __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_9 < 0)) { PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer, (PyObject*)__pyx_v_full_cov, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); } __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0; } __pyx_pybuffernd_full_cov.diminfo[0].strides = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_full_cov.diminfo[0].shape = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_full_cov.diminfo[1].strides = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_full_cov.diminfo[1].shape = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1634, __pyx_L1_error) } __pyx_t_8 = 0; __pyx_v_full_cov = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
1635: else:
+1636: xm, full_cov = self.obtain_full_mean_cov(x0, Tf, Nf, model, contactMatrix)
/*else*/ {
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_full_mean_cov(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1636, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
__PYX_ERR(0, 1636, __pyx_L1_error)
}
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
if (likely(PyTuple_CheckExact(sequence))) {
__pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
__pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
} else {
__pyx_t_4 = PyList_GET_ITEM(sequence, 0);
__pyx_t_3 = PyList_GET_ITEM(sequence, 1);
}
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
#else
__pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1636, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1636, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else {
Py_ssize_t index = -1;
__pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1636, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_3);
if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(0, 1636, __pyx_L1_error)
__pyx_t_6 = NULL;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L7_unpacking_done;
__pyx_L6_unpacking_failed:;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_6 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
__PYX_ERR(0, 1636, __pyx_L1_error)
__pyx_L7_unpacking_done:;
}
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1636, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1636, __pyx_L1_error)
__pyx_v_xm = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
__pyx_t_8 = ((PyArrayObject *)__pyx_t_3);
{
__Pyx_BufFmt_StackElem __pyx_stack[1];
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer);
__pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack);
if (unlikely(__pyx_t_9 < 0)) {
PyErr_Fetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10);
if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_full_cov.rcbuffer->pybuffer, (PyObject*)__pyx_v_full_cov, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) {
Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10);
__Pyx_RaiseBufferFallbackError();
} else {
PyErr_Restore(__pyx_t_12, __pyx_t_11, __pyx_t_10);
}
__pyx_t_12 = __pyx_t_11 = __pyx_t_10 = 0;
}
__pyx_pybuffernd_full_cov.diminfo[0].strides = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_full_cov.diminfo[0].shape = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_full_cov.diminfo[1].strides = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_full_cov.diminfo[1].shape = __pyx_pybuffernd_full_cov.rcbuffer->pybuffer.shape[1];
if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1636, __pyx_L1_error)
}
__pyx_t_8 = 0;
__pyx_v_full_cov = ((PyArrayObject *)__pyx_t_3);
__pyx_t_3 = 0;
}
__pyx_L3:;
+1637: full_fltr = sparse.block_diag(fltr)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sparse); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_block_diag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_fltr)) : __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_fltr)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1637, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_full_fltr = __pyx_t_2; __pyx_t_2 = 0;
+1638: cov_red = full_fltr@full_cov@np.transpose(full_fltr)
__pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, ((PyObject *)__pyx_v_full_cov)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_transpose); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_v_full_fltr) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_full_fltr); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1638, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1638, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_5); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer); __pyx_t_9 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_9 < 0)) { PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_cov_red.rcbuffer->pybuffer, (PyObject*)__pyx_v_cov_red, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); } __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0; } __pyx_pybuffernd_cov_red.diminfo[0].strides = __pyx_pybuffernd_cov_red.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_cov_red.diminfo[0].shape = __pyx_pybuffernd_cov_red.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_cov_red.diminfo[1].strides = __pyx_pybuffernd_cov_red.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_cov_red.diminfo[1].shape = __pyx_pybuffernd_cov_red.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1638, __pyx_L1_error) } __pyx_t_8 = 0; __pyx_v_cov_red = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
+1639: xm_red = full_fltr@(np.ravel(xm))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ravel); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_xm, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_v_full_fltr, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 1639, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_xm_red = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
+1640: dev=np.subtract(obs_flattened, xm_red)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_subtract); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_obs_flattened, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_xm_red, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_14 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_14)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_14); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_5, __pyx_t_3}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_14, __pyx_t_5, __pyx_t_3}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_15 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__pyx_t_14) { __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_14); __pyx_t_14 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_9, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_9, __pyx_t_3); __pyx_t_5 = 0; __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 1640, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_dev = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
+1641: cov_red_inv_dev, ldet = pyross.utils.solve_symmetric_close_to_singular(cov_red, dev)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyross); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_utils); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_solve_symmetric_close_to_singula); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = __pyx_memoryview_fromslice(__pyx_v_dev, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_3 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_cov_red), __pyx_t_15}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_cov_red), __pyx_t_15}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_cov_red)); __Pyx_GIVEREF(((PyObject *)__pyx_v_cov_red)); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, ((PyObject *)__pyx_v_cov_red)); __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_15); __pyx_t_15 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1641, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_15 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 1641, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = Py_TYPE(__pyx_t_15)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_15); if (unlikely(!__pyx_t_4)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_5 = __pyx_t_6(__pyx_t_15); if (unlikely(!__pyx_t_5)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_15), 2) < 0) __PYX_ERR(0, 1641, __pyx_L1_error) __pyx_t_6 = NULL; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_6 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1641, __pyx_L1_error) __pyx_L9_unpacking_done:; } __pyx_v_cov_red_inv_dev = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_ldet = __pyx_t_5; __pyx_t_5 = 0;
+1642: log_p = -np.dot(dev, cov_red_inv_dev)*(self.N/2)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_dot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_dev, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_15 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_5, __pyx_v_cov_red_inv_dev}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_15, __pyx_t_5, __pyx_v_cov_red_inv_dev}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_3 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_15); __pyx_t_15 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_v_cov_red_inv_dev); __Pyx_GIVEREF(__pyx_v_cov_red_inv_dev); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_9, __pyx_v_cov_red_inv_dev); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_Negative(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble((__pyx_v_self->N / 2.0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1642, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_log_p = __pyx_t_3; __pyx_t_3 = 0;
+1643: log_p -= (ldet-reduced_dim*log(self.N))/2 + (reduced_dim/2)*log(2*PI)
__pyx_t_3 = PyFloat_FromDouble((__pyx_v_reduced_dim * log(__pyx_v_self->N))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyNumber_Subtract(__pyx_v_ldet, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_2, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(((__pyx_v_reduced_dim / 2) * log((2.0 * __pyx_v_6pyross_9inference_PI)))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceSubtract(__pyx_v_log_p, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_log_p, __pyx_t_2); __pyx_t_2 = 0;
+1644: return -log_p
__pyx_t_2 = PyNumber_Negative(__pyx_v_log_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_16 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_16 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1644, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_16; goto __pyx_L0;
1645:
+1646: cdef double obtain_log_p_for_traj_tangent_space(self, double [:, :] x, double Tf, Py_ssize_t Nf, model, contactMatrix):
static double __pyx_f_6pyross_9inference_8SIR_type_obtain_log_p_for_traj_tangent_space(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
__Pyx_memviewslice __pyx_v_dx = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xt = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_dx_det = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_dt;
double __pyx_v_logp;
double __pyx_v_t;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_v_dev = NULL;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_log_p_for_traj_tangent_space", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__Pyx_WriteUnraisable("pyross.inference.SIR_type.obtain_log_p_for_traj_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_dx, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_dx_det, 1);
__Pyx_XDECREF(__pyx_v_dev);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1647: cdef:
1648: double [:, :] dx, cov
1649: double [:] xt, time_points, dx_det
1650: double dt, logp, t
1651: Py_ssize_t i
+1652: time_points = np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 1652, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_time_points = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL;
+1653: dt = time_points[2]
__pyx_t_9 = 2; __pyx_v_dt = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_9 * __pyx_v_time_points.strides[0]) )));
+1654: dx = np.gradient(x, axis=0)*2
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_gradient); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_x, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 1654, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_t_4, __pyx_int_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1654, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 1654, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_dx = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
+1655: logp = 0
__pyx_v_logp = 0.0;
+1656: for i in range(1, Nf-1):
__pyx_t_11 = (__pyx_v_Nf - 1);
__pyx_t_12 = __pyx_t_11;
for (__pyx_t_13 = 1; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_i = __pyx_t_13;
+1657: xt = x[i]
__pyx_t_8.data = __pyx_v_x.data;
__pyx_t_8.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_x.strides[0];
if ((0)) __PYX_ERR(0, 1657, __pyx_L1_error)
__pyx_t_8.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_8.shape[0] = __pyx_v_x.shape[1];
__pyx_t_8.strides[0] = __pyx_v_x.strides[1];
__pyx_t_8.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__pyx_v_xt = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+1658: t = time_points[i]
__pyx_t_14 = __pyx_v_i;
__pyx_v_t = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_14 * __pyx_v_time_points.strides[0]) )));
+1659: dx_det, cov = self.estimate_dx_and_cov(xt, t, dt, model, contactMatrix)
__pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->estimate_dx_and_cov(__pyx_v_self, __pyx_v_xt, __pyx_v_t, __pyx_v_dt, __pyx_v_model, __pyx_v_contactMatrix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1659, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_15 = Py_TYPE(__pyx_t_3)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_7 = __pyx_t_15(__pyx_t_3); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_15(__pyx_t_3), 2) < 0) __PYX_ERR(0, 1659, __pyx_L1_error) __pyx_t_15 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_15 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1659, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 1659, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_dx_det, 1); __pyx_v_dx_det = __pyx_t_8; __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
+1660: dev = np.subtract(dx[i], dx_det)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_subtract); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8.data = __pyx_v_dx.data; __pyx_t_8.memview = __pyx_v_dx.memview; __PYX_INC_MEMVIEW(&__pyx_t_8, 0); { Py_ssize_t __pyx_tmp_idx = __pyx_v_i; Py_ssize_t __pyx_tmp_stride = __pyx_v_dx.strides[0]; if ((0)) __PYX_ERR(0, 1660, __pyx_L1_error) __pyx_t_8.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_8.shape[0] = __pyx_v_dx.shape[1]; __pyx_t_8.strides[0] = __pyx_v_dx.strides[1]; __pyx_t_8.suboffsets[0] = -1; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_t_8, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_dx_det, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1660, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1660, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_3); __pyx_t_7 = 0; __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1660, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF_SET(__pyx_v_dev, __pyx_t_1); __pyx_t_1 = 0;
+1661: logp += self.log_cond_p(dev, cov)
__pyx_t_8 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_dev, PyBUF_WRITABLE); if (unlikely(!__pyx_t_8.memview)) __PYX_ERR(0, 1661, __pyx_L1_error) __pyx_v_logp = (__pyx_v_logp + ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->log_cond_p(__pyx_v_self, __pyx_t_8, __pyx_v_cov)); __PYX_XDEC_MEMVIEW(&__pyx_t_8, 1); __pyx_t_8.memview = NULL; __pyx_t_8.data = NULL; }
+1662: return -logp
__pyx_r = (-__pyx_v_logp); goto __pyx_L0;
1663:
+1664: cdef double log_cond_p(self, double [:] x, double [:, :] cov):
static double __pyx_f_6pyross_9inference_8SIR_type_log_cond_p(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_cov) {
__Pyx_memviewslice __pyx_v_invcov_x = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_log_cond_p;
PyObject *__pyx_v_ldet = NULL;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("log_cond_p", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_9, 1);
__Pyx_WriteUnraisable("pyross.inference.SIR_type.log_cond_p", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_invcov_x, 1);
__Pyx_XDECREF(__pyx_v_ldet);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1665: cdef:
1666: double [:] invcov_x
1667: double log_cond_p
1668: double det
+1669: invcov_x, ldet = pyross.utils.solve_symmetric_close_to_singular(cov, x)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_solve_symmetric_close_to_singula); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_x, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { PyObject* sequence = __pyx_t_1; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1669, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_4); if (unlikely(!__pyx_t_7)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_4), 2) < 0) __PYX_ERR(0, 1669, __pyx_L1_error) __pyx_t_8 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1669, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_t_9 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_9.memview)) __PYX_ERR(0, 1669, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_invcov_x = __pyx_t_9; __pyx_t_9.memview = NULL; __pyx_t_9.data = NULL; __pyx_v_ldet = __pyx_t_7; __pyx_t_7 = 0;
+1670: log_cond_p = - np.dot(x, invcov_x)*(self.N/2) - (self.dim/2)*log(2*PI)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_dot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_x, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_invcov_x, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble((__pyx_v_self->N / 2.0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(((__pyx_v_self->dim / 2) * log((2.0 * __pyx_v_6pyross_9inference_PI)))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Subtract(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1670, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_log_cond_p = __pyx_t_10;
+1671: log_cond_p -= (ldet - self.dim*log(self.N))/2
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_log_cond_p); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyFloat_FromDouble((__pyx_v_self->dim * log(__pyx_v_self->N))); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyNumber_Subtract(__pyx_v_ldet, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_TrueDivideObjC(__pyx_t_5, __pyx_int_2, 2, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceSubtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1671, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1671, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_log_cond_p = __pyx_t_10;
+1672: log_cond_p -= self.dim*np.log(self.N)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_log_cond_p); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_log); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceSubtract(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_2); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1672, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_log_cond_p = __pyx_t_10;
+1673: return log_cond_p
__pyx_r = __pyx_v_log_cond_p; goto __pyx_L0;
1674:
+1675: cdef estimate_cond_mean_cov(self, double [:] x0, double t1, double t2, model, contactMatrix):
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_estimate_cond_mean_cov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_t1, double __pyx_v_t2, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_estimate_cond_mean_cov *__pyx_cur_scope;
__Pyx_memviewslice __pyx_v_cov_array = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_sigma0 = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov_mat = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_steps;
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_rhs = 0;
PyObject *__pyx_v_res = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("estimate_cond_mean_cov", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_estimate_cond_mean_cov *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_7_estimate_cond_mean_cov(__pyx_ptype_6pyross_9inference___pyx_scope_struct_7_estimate_cond_mean_cov, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_estimate_cond_mean_cov *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 1675, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.estimate_cond_mean_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_cov_array, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_sigma0, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov_mat, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__Pyx_XDECREF(__pyx_v_rhs);
__Pyx_XDECREF(__pyx_v_res);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_estimate_cond_mean_cov {
PyObject_HEAD
PyObject *__pyx_v_contactMatrix;
struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self;
PyObject *__pyx_v_spline;
};
1676: cdef:
1677: double [:, :] cov_array
+1678: double [:] cov, sigma0=np.zeros((self.vec_size), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->vec_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1678, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_sigma0 = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
1679: double [:, :] x, cov_mat
+1680: Py_ssize_t steps = self.steps
__pyx_t_6 = __pyx_cur_scope->__pyx_v_self->steps; __pyx_v_steps = __pyx_t_6;
+1681: double [:] time_points = np.linspace(t1, t2, steps)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_linspace); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_1, __pyx_t_2, __pyx_t_7}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_1, __pyx_t_2, __pyx_t_7}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_10 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_7); __pyx_t_1 = 0; __pyx_t_2 = 0; __pyx_t_7 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1681, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_time_points = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+1682: x = self.integrate(x0, t1, t2, steps, model, contactMatrix)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_t_10, __pyx_t_7, __pyx_t_2, __pyx_t_1, __pyx_v_model, __pyx_cur_scope->__pyx_v_contactMatrix}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_t_10, __pyx_t_7, __pyx_t_2, __pyx_t_1, __pyx_v_model, __pyx_cur_scope->__pyx_v_contactMatrix}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_11 = PyTuple_New(6+__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_9, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_9, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_9, __pyx_t_1); __Pyx_INCREF(__pyx_v_model); __Pyx_GIVEREF(__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_9, __pyx_v_model); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_9, __pyx_cur_scope->__pyx_v_contactMatrix); __pyx_t_10 = 0; __pyx_t_7 = 0; __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1682, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_x = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+1683: spline = make_interp_spline(time_points, x)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_make_interp_spline); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = __pyx_memoryview_fromslice(__pyx_v_time_points, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_x, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_11, __pyx_t_1}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_11, __pyx_t_1}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_t_1); __pyx_t_11 = 0; __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1683, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GIVEREF(__pyx_t_4); __pyx_cur_scope->__pyx_v_spline = __pyx_t_4; __pyx_t_4 = 0;
1684:
+1685: def rhs(t, sig):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_22estimate_cond_mean_cov_1rhs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_22estimate_cond_mean_cov_1rhs = {"rhs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_8SIR_type_22estimate_cond_mean_cov_1rhs, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_22estimate_cond_mean_cov_1rhs(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_t = 0;
PyObject *__pyx_v_sig = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_sig,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_sig)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("rhs", 1, 2, 2, 1); __PYX_ERR(0, 1685, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rhs") < 0)) __PYX_ERR(0, 1685, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_t = values[0];
__pyx_v_sig = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("rhs", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1685, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.estimate_cond_mean_cov.rhs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_22estimate_cond_mean_cov_rhs(__pyx_self, __pyx_v_t, __pyx_v_sig);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_22estimate_cond_mean_cov_rhs(PyObject *__pyx_self, PyObject *__pyx_v_t, PyObject *__pyx_v_sig) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_estimate_cond_mean_cov *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_estimate_cond_mean_cov *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_7_estimate_cond_mean_cov *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.estimate_cond_mean_cov.rhs", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__30 = PyTuple_Pack(2, __pyx_n_s_t, __pyx_n_s_sig); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(0, 1685, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__30);
__Pyx_GIVEREF(__pyx_tuple__30);
/* … */
__pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_22estimate_cond_mean_cov_1rhs, 0, __pyx_n_s_SIR_type_estimate_cond_mean_cov, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1685, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_rhs = __pyx_t_4;
__pyx_t_4 = 0;
__pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__30, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_rhs, 1685, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(0, 1685, __pyx_L1_error)
+1686: self.CM = contactMatrix(t)
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 1686, __pyx_L1_error) }
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_t_2 = __pyx_cur_scope->__pyx_v_contactMatrix; __pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
}
}
__pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_t) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1686, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1686, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1686, __pyx_L1_error) }
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->CM);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->CM));
__pyx_cur_scope->__pyx_v_self->CM = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+1687: self.lyapunov_fun(t, sig, spline)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1687, __pyx_L1_error) }
__pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1687, __pyx_L1_error)
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_sig, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1687, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_spline)) { __Pyx_RaiseClosureNameError("spline"); __PYX_ERR(0, 1687, __pyx_L1_error) }
__pyx_t_1 = __pyx_cur_scope->__pyx_v_spline;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->lyapunov_fun(__pyx_cur_scope->__pyx_v_self, __pyx_t_4, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1687, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__pyx_t_5.memview = NULL;
__pyx_t_5.data = NULL;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1688: return self.dsigmadt
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 1688, __pyx_L1_error) } __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->dsigmadt)); __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_self->dsigmadt); goto __pyx_L0;
1689:
+1690: if self.lyapunov_method=='euler':
__pyx_t_13 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_self->lyapunov_method, __pyx_n_u_euler, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 1690, __pyx_L1_error) __pyx_t_14 = (__pyx_t_13 != 0); if (__pyx_t_14) { /* … */ goto __pyx_L3; }
+1691: cov_array = pyross.utils.forward_euler_integration(rhs, sigma0, t1, t2, steps)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_forward_euler_integration); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_sigma0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[6] = {__pyx_t_10, __pyx_v_rhs, __pyx_t_7, __pyx_t_1, __pyx_t_11, __pyx_t_2}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[6] = {__pyx_t_10, __pyx_v_rhs, __pyx_t_7, __pyx_t_1, __pyx_t_11, __pyx_t_2}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_8 = PyTuple_New(5+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_v_rhs); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_9, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_9, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 4+__pyx_t_9, __pyx_t_2); __pyx_t_7 = 0; __pyx_t_1 = 0; __pyx_t_11 = 0; __pyx_t_2 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1691, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_cov_array = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+1692: cov = cov_array[steps-1]
__pyx_t_5.data = __pyx_v_cov_array.data;
__pyx_t_5.memview = __pyx_v_cov_array.memview;
__PYX_INC_MEMVIEW(&__pyx_t_5, 0);
{
Py_ssize_t __pyx_tmp_idx = (__pyx_v_steps - 1);
Py_ssize_t __pyx_tmp_stride = __pyx_v_cov_array.strides[0];
if ((0)) __PYX_ERR(0, 1692, __pyx_L1_error)
__pyx_t_5.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_5.shape[0] = __pyx_v_cov_array.shape[1];
__pyx_t_5.strides[0] = __pyx_v_cov_array.strides[1];
__pyx_t_5.suboffsets[0] = -1;
__pyx_v_cov = __pyx_t_5;
__pyx_t_5.memview = NULL;
__pyx_t_5.data = NULL;
+1693: elif self.lyapunov_method=='RK45':
__pyx_t_14 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_self->lyapunov_method, __pyx_n_u_RK45, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1693, __pyx_L1_error) __pyx_t_13 = (__pyx_t_14 != 0); if (__pyx_t_13) { /* … */ goto __pyx_L3; }
+1694: res = solve_ivp(rhs, (t1, t2), sigma0, method='RK45', t_eval=np.array([t2]), first_step=(t2-t1)/steps, max_step=steps)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_8); __pyx_t_3 = 0; __pyx_t_8 = 0; __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_sigma0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rhs); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_8); __pyx_t_2 = 0; __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_method, __pyx_n_u_RK45) < 0) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_7 = PyList_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_11); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_11)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_11); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_2 = (__pyx_t_11) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_11, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_t_eval, __pyx_t_2) < 0) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(((__pyx_v_t2 - __pyx_v_t1) / ((double)__pyx_v_steps))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_first_step, __pyx_t_2) < 0) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_max_step, __pyx_t_2) < 0) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1694, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_res = __pyx_t_2; __pyx_t_2 = 0;
+1695: cov = res.y[0]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_y); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1695, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1695, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_v_cov = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+1696: elif self.lyapunov_method=='LSODA':
__pyx_t_13 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_self->lyapunov_method, __pyx_n_u_LSODA, Py_EQ)); if (unlikely(__pyx_t_13 < 0)) __PYX_ERR(0, 1696, __pyx_L1_error) __pyx_t_14 = (__pyx_t_13 != 0); if (__pyx_t_14) { /* … */ goto __pyx_L3; }
+1697: res = solve_ivp(rhs, (t1, t2), sigma0, method='LSODA', t_eval=np.array([t2]), first_step=(t2-t1)/steps, max_step=steps)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_sigma0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_rhs); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_method, __pyx_n_u_LSODA) < 0) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = PyList_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_1); PyList_SET_ITEM(__pyx_t_11, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_1, __pyx_t_11) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_11); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_t_eval, __pyx_t_4) < 0) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(((__pyx_v_t2 - __pyx_v_t1) / ((double)__pyx_v_steps))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_first_step, __pyx_t_4) < 0) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_max_step, __pyx_t_4) < 0) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_res = __pyx_t_4; __pyx_t_4 = 0;
+1698: cov = res.y[0]
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_res, __pyx_n_s_y); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1698, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 1698, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_cov = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+1699: elif self.lyapunov_method=='RK2':
__pyx_t_14 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_self->lyapunov_method, __pyx_n_u_RK2, Py_EQ)); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 1699, __pyx_L1_error) __pyx_t_13 = (__pyx_t_14 != 0); if (likely(__pyx_t_13)) { /* … */ goto __pyx_L3; }
+1700: cov_array = pyross.utils.RK2_integration(rhs, sigma0, t1, t2, steps)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyross); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_utils); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_RK2_integration); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_sigma0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_1 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[6] = {__pyx_t_1, __pyx_v_rhs, __pyx_t_2, __pyx_t_8, __pyx_t_7, __pyx_t_11}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[6] = {__pyx_t_1, __pyx_v_rhs, __pyx_t_2, __pyx_t_8, __pyx_t_7, __pyx_t_11}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_10 = PyTuple_New(5+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_1) { __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1); __pyx_t_1 = NULL; } __Pyx_INCREF(__pyx_v_rhs); __Pyx_GIVEREF(__pyx_v_rhs); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_v_rhs); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 3+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 4+__pyx_t_9, __pyx_t_11); __pyx_t_2 = 0; __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_11 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1700, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_cov_array = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+1701: cov = cov_array[steps-1]
__pyx_t_5.data = __pyx_v_cov_array.data;
__pyx_t_5.memview = __pyx_v_cov_array.memview;
__PYX_INC_MEMVIEW(&__pyx_t_5, 0);
{
Py_ssize_t __pyx_tmp_idx = (__pyx_v_steps - 1);
Py_ssize_t __pyx_tmp_stride = __pyx_v_cov_array.strides[0];
if ((0)) __PYX_ERR(0, 1701, __pyx_L1_error)
__pyx_t_5.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_5.shape[0] = __pyx_v_cov_array.shape[1];
__pyx_t_5.strides[0] = __pyx_v_cov_array.strides[1];
__pyx_t_5.suboffsets[0] = -1;
__pyx_v_cov = __pyx_t_5;
__pyx_t_5.memview = NULL;
__pyx_t_5.data = NULL;
1702: else:
+1703: raise Exception("Error: lyapunov method not found. Use set_lyapunov_method to change the method")
/*else*/ {
__pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1703, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__PYX_ERR(0, 1703, __pyx_L1_error)
}
__pyx_L3:;
/* … */
__pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_u_Error_lyapunov_method_not_found); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 1703, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__32);
__Pyx_GIVEREF(__pyx_tuple__32);
1704:
+1705: cov_mat = self.convert_vec_to_mat(cov)
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->convert_vec_to_mat(__pyx_cur_scope->__pyx_v_self, __pyx_v_cov, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1705, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_cov_mat = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+1706: return x[steps-1], cov_mat
__Pyx_XDECREF(__pyx_r); __pyx_t_5.data = __pyx_v_x.data; __pyx_t_5.memview = __pyx_v_x.memview; __PYX_INC_MEMVIEW(&__pyx_t_5, 0); { Py_ssize_t __pyx_tmp_idx = (__pyx_v_steps - 1); Py_ssize_t __pyx_tmp_stride = __pyx_v_x.strides[0]; if ((0)) __PYX_ERR(0, 1706, __pyx_L1_error) __pyx_t_5.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_5.shape[0] = __pyx_v_x.shape[1]; __pyx_t_5.strides[0] = __pyx_v_x.strides[1]; __pyx_t_5.suboffsets[0] = -1; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_t_5, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __PYX_XDEC_MEMVIEW(&__pyx_t_5, 1); __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_cov_mat, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_r = __pyx_t_10; __pyx_t_10 = 0; goto __pyx_L0;
1707:
+1708: cdef estimate_dx_and_cov(self, double [:] xt, double t, double dt, model, contactMatrix):
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_estimate_dx_and_cov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_xt, double __pyx_v_t, double __pyx_v_dt, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
__Pyx_memviewslice __pyx_v_dx_det = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("estimate_dx_and_cov", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.estimate_dx_and_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_dx_det, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1709: cdef:
1710: double [:] dx_det
1711: double [:, :] cov
+1712: model.set_contactMatrix(t, contactMatrix)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_model, __pyx_n_s_set_contactMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_contactMatrix}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1712, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_v_contactMatrix}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1712, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_contactMatrix); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1712, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1713: model.rhs(np.multiply(xt, self.N), t)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_model, __pyx_n_s_rhs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_multiply); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_xt, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_self->N); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_3, __pyx_t_7}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_3, __pyx_t_7}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_t_7); __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_6, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_6, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_t_4); __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1713, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1714: dx_det = np.multiply(dt/self.N, model.dxdt)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_multiply); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble((__pyx_v_dt / __pyx_v_self->N)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_model, __pyx_n_s_dxdt); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1714, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1714, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_5, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_5, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1714, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 1714, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_dx_det = __pyx_t_10; __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL;
+1715: self.compute_jacobian_and_b_matrix(xt, t, contactMatrix)
__pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_v_self, __pyx_v_xt, __pyx_v_t, __pyx_v_contactMatrix, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1715, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1716: cov = np.multiply(dt, self.convert_vec_to_mat(self.B_vec))
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_multiply); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->B_vec), PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 1716, __pyx_L1_error) __pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->convert_vec_to_mat(__pyx_v_self, __pyx_t_10, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __pyx_t_2 = NULL; __pyx_t_5 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_5 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_7, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_4); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1716, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1717: return dx_det, cov
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_dx_det, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1717, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_9); __pyx_t_1 = 0; __pyx_t_9 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
1718:
+1719: cpdef obtain_full_mean_cov(self, double [:] x0, double Tf, Py_ssize_t Nf, model, contactMatrix):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_73obtain_full_mean_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_obtain_full_mean_cov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix, int __pyx_skip_dispatch) {
Py_ssize_t __pyx_v_dim;
Py_ssize_t __pyx_v_i;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xf = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cond_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_temp = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_full_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_ti;
double __pyx_v_tf;
Py_ssize_t __pyx_v_j;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov", 0);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
else {
PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_full_mean_cov); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1719, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_73obtain_full_mean_cov)) {
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 1719, __pyx_L1_error) }
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1719, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1719, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1719, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_6 = __pyx_t_1; __pyx_t_7 = NULL;
__pyx_t_8 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_model, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1719, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_model, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1719, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
{
__pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1719, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
if (__pyx_t_7) {
__Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
}
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5);
__Pyx_INCREF(__pyx_v_model);
__Pyx_GIVEREF(__pyx_v_model);
PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_v_model);
__Pyx_INCREF(__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, __pyx_v_contactMatrix);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1719, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
if (unlikely(type_dict_guard != tp_dict_version)) {
tp_dict_version = obj_dict_version = 0;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_23, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_24, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_25, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xf, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cond_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_temp, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_full_cov, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_73obtain_full_mean_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_73obtain_full_mean_cov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_model = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_model,&__pyx_n_s_contactMatrix,0};
PyObject* values[5] = {0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov", 1, 5, 5, 1); __PYX_ERR(0, 1719, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov", 1, 5, 5, 2); __PYX_ERR(0, 1719, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov", 1, 5, 5, 3); __PYX_ERR(0, 1719, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov", 1, 5, 5, 4); __PYX_ERR(0, 1719, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "obtain_full_mean_cov") < 0)) __PYX_ERR(0, 1719, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 1719, __pyx_L3_error)
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1719, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1719, __pyx_L3_error)
__pyx_v_model = values[3];
__pyx_v_contactMatrix = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1719, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_72obtain_full_mean_cov(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_72obtain_full_mean_cov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov", 0);
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 1719, __pyx_L1_error) }
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type_obtain_full_mean_cov(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1719, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1720: cdef:
+1721: Py_ssize_t dim=self.dim, i
__pyx_t_10 = __pyx_v_self->dim; __pyx_v_dim = __pyx_t_10;
+1722: double [:, :] xm=np.empty((Nf, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1722, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_xm = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1723: double [:] time_points=np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_linspace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_9, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_9, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_4 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_8, __pyx_t_2); __pyx_t_9 = 0; __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1723, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_time_points = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
1724: double [:] xi, xf
1725: double [:, :] cond_cov, cov, temp
1726: double [:, :, :, :] full_cov
1727: double ti, tf
+1728: xm = self.integrate(x0, 0, Tf, Nf, model, contactMatrix,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_2); __Pyx_INCREF(__pyx_v_model); __Pyx_GIVEREF(__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_v_model); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_v_contactMatrix); __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_2 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1728, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1); __pyx_v_xm = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1729: method='LSODA', maxNumSteps=self.steps*Nf)
__pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, __pyx_n_u_LSODA) < 0) __PYX_ERR(0, 1729, __pyx_L1_error) __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_self->steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1729, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_maxNumSteps, __pyx_t_4) < 0) __PYX_ERR(0, 1729, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1730: cov = np.zeros((dim, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_9); __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1730, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1731: full_cov = np.zeros((Nf-1, dim, Nf-1, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_6); __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_2 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 1731, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_full_cov = __pyx_t_13; __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL;
+1732: for i in range(Nf-1):
__pyx_t_10 = (__pyx_v_Nf - 1);
__pyx_t_14 = __pyx_t_10;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
+1733: ti = time_points[i]
__pyx_t_16 = __pyx_v_i;
__pyx_v_ti = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_16 * __pyx_v_time_points.strides[0]) )));
+1734: tf = time_points[i+1]
__pyx_t_17 = (__pyx_v_i + 1);
__pyx_v_tf = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_17 * __pyx_v_time_points.strides[0]) )));
+1735: xi = xm[i]
__pyx_t_12.data = __pyx_v_xm.data;
__pyx_t_12.memview = __pyx_v_xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_xm.strides[0];
if ((0)) __PYX_ERR(0, 1735, __pyx_L1_error)
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_xm.shape[1];
__pyx_t_12.strides[0] = __pyx_v_xm.strides[1];
__pyx_t_12.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1);
__pyx_v_xi = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+1736: xf, cond_cov = self.estimate_cond_mean_cov(xi, ti, tf, model,
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->estimate_cond_mean_cov(__pyx_v_self, __pyx_v_xi, __pyx_v_ti, __pyx_v_tf, __pyx_v_model, __pyx_v_contactMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1736, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_6 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1736, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_18 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_18(__pyx_t_1); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_6 = __pyx_t_18(__pyx_t_1); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); if (__Pyx_IternextUnpackEndCheck(__pyx_t_18(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1736, __pyx_L1_error) __pyx_t_18 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L6_unpacking_done; __pyx_L5_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_18 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1736, __pyx_L1_error) __pyx_L6_unpacking_done:; } __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1736, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1736, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_xf, 1); __pyx_v_xf = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_v_cond_cov, 1); __pyx_v_cond_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
1737: contactMatrix)
+1738: self.obtain_time_evol_op(xi, xf, ti, tf, model, contactMatrix)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_time_evol_op(__pyx_v_self, __pyx_v_xi, __pyx_v_xf, __pyx_v_ti, __pyx_v_tf, __pyx_v_model, __pyx_v_contactMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1738, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1739: cov = np.add(self.U@cov@self.U.T, cond_cov)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_add); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyNumber_MatrixMultiply(((PyObject *)__pyx_v_self->U), __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->U), __pyx_n_s_T); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_cond_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_9, __pyx_t_6}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_9, __pyx_t_6}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_1) { __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL; } __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_6); __pyx_t_9 = 0; __pyx_t_6 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1739, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1740: full_cov[i, :, i, :] = cov
__pyx_t_11.data = __pyx_v_full_cov.data;
__pyx_t_11.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_11, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
if ((0)) __PYX_ERR(0, 1740, __pyx_L1_error)
__pyx_t_11.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_11.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_11.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_11.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
if ((0)) __PYX_ERR(0, 1740, __pyx_L1_error)
__pyx_t_11.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_11.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_11.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_11.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_cov, __pyx_t_11, 2, 2, 0) < 0)) __PYX_ERR(0, 1740, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__pyx_t_11.memview = NULL;
__pyx_t_11.data = NULL;
+1741: if i>0:
__pyx_t_19 = ((__pyx_v_i > 0) != 0);
if (__pyx_t_19) {
/* … */
}
}
+1742: for j in range(0, i):
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_t_20;
for (__pyx_t_22 = 0; __pyx_t_22 < __pyx_t_21; __pyx_t_22+=1) {
__pyx_v_j = __pyx_t_22;
+1743: temp = full_cov[j, :, i-1, :]@self.U.T
__pyx_t_23.data = __pyx_v_full_cov.data;
__pyx_t_23.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_23, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
if ((0)) __PYX_ERR(0, 1743, __pyx_L1_error)
__pyx_t_23.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_23.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_23.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_23.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = (__pyx_v_i - 1);
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
if ((0)) __PYX_ERR(0, 1743, __pyx_L1_error)
__pyx_t_23.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_23.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_23.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_23.suboffsets[1] = -1;
__pyx_t_2 = __pyx_memoryview_fromslice(__pyx_t_23, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1743, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_23, 1);
__pyx_t_23.memview = NULL;
__pyx_t_23.data = NULL;
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->U), __pyx_n_s_T); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1743, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_4 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1743, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_23 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_23.memview)) __PYX_ERR(0, 1743, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__PYX_XDEC_MEMVIEW(&__pyx_v_temp, 1);
__pyx_v_temp = __pyx_t_23;
__pyx_t_23.memview = NULL;
__pyx_t_23.data = NULL;
+1744: full_cov[j, :, i, :] = temp
__pyx_t_23.data = __pyx_v_full_cov.data;
__pyx_t_23.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_23, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
if ((0)) __PYX_ERR(0, 1744, __pyx_L1_error)
__pyx_t_23.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_23.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_23.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_23.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
if ((0)) __PYX_ERR(0, 1744, __pyx_L1_error)
__pyx_t_23.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_23.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_23.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_23.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_temp, __pyx_t_23, 2, 2, 0) < 0)) __PYX_ERR(0, 1744, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_23, 1);
__pyx_t_23.memview = NULL;
__pyx_t_23.data = NULL;
+1745: full_cov[i, :, j, :] = temp.T
__pyx_t_24 = __pyx_v_temp;
__PYX_INC_MEMVIEW(&__pyx_t_24, 1);
if (unlikely(__pyx_memslice_transpose(&__pyx_t_24) == 0)) __PYX_ERR(0, 1745, __pyx_L1_error)
__pyx_t_25.data = __pyx_v_full_cov.data;
__pyx_t_25.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_25, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
if ((0)) __PYX_ERR(0, 1745, __pyx_L1_error)
__pyx_t_25.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_25.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_25.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_25.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
if ((0)) __PYX_ERR(0, 1745, __pyx_L1_error)
__pyx_t_25.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_25.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_25.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_25.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_t_24, __pyx_t_25, 2, 2, 0) < 0)) __PYX_ERR(0, 1745, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_25, 1);
__pyx_t_25.memview = NULL;
__pyx_t_25.data = NULL;
__PYX_XDEC_MEMVIEW(&__pyx_t_24, 1);
__pyx_t_24.memview = NULL;
__pyx_t_24.data = NULL;
}
1746: # returns mean and cov for all but first (fixed!) time point
+1747: return xm[1:], np.reshape(full_cov, ((Nf-1)*dim, (Nf-1)*dim))
__Pyx_XDECREF(__pyx_r); __pyx_t_24.data = __pyx_v_xm.data; __pyx_t_24.memview = __pyx_v_xm.memview; __PYX_INC_MEMVIEW(&__pyx_t_24, 0); __pyx_t_8 = -1; if (unlikely(__pyx_memoryview_slice_memviewslice( &__pyx_t_24, __pyx_v_xm.shape[0], __pyx_v_xm.strides[0], __pyx_v_xm.suboffsets[0], 0, 0, &__pyx_t_8, 1, 0, 0, 1, 0, 0, 1) < 0)) { __PYX_ERR(0, 1747, __pyx_L1_error) } __pyx_t_24.shape[1] = __pyx_v_xm.shape[1]; __pyx_t_24.strides[1] = __pyx_v_xm.strides[1]; __pyx_t_24.suboffsets[1] = -1; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_t_24, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __PYX_XDEC_MEMVIEW(&__pyx_t_24, 1); __pyx_t_24.memview = NULL; __pyx_t_24.data = NULL; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_full_cov, 4, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyInt_FromSsize_t(((__pyx_v_Nf - 1) * __pyx_v_dim)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = PyInt_FromSsize_t(((__pyx_v_Nf - 1) * __pyx_v_dim)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); __pyx_t_9 = 0; __pyx_t_1 = 0; __pyx_t_1 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_2, __pyx_t_3}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_2, __pyx_t_3}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_1) { __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __pyx_t_1 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_3); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1747, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_r = __pyx_t_6; __pyx_t_6 = 0; goto __pyx_L0;
1748:
+1749: cpdef obtain_full_invcov(self, double [:] x0, double Tf, Py_ssize_t Nf, model, contactMatrix):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_75obtain_full_invcov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_obtain_full_invcov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix, int __pyx_skip_dispatch) {
Py_ssize_t __pyx_v_dim;
Py_ssize_t __pyx_v_i;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xf = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_invcov = 0;
PyArrayObject *__pyx_v_temp = 0;
double __pyx_v_ti;
double __pyx_v_tf;
PyObject *__pyx_v_full_cov_inv = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
CYTHON_UNUSED Py_ssize_t __pyx_8genexpr2__pyx_v_i;
__Pyx_LocalBuf_ND __pyx_pybuffernd_invcov;
__Pyx_Buffer __pyx_pybuffer_invcov;
__Pyx_LocalBuf_ND __pyx_pybuffernd_temp;
__Pyx_Buffer __pyx_pybuffer_temp;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_invcov", 0);
__pyx_pybuffer_invcov.pybuffer.buf = NULL;
__pyx_pybuffer_invcov.refcount = 0;
__pyx_pybuffernd_invcov.data = NULL;
__pyx_pybuffernd_invcov.rcbuffer = &__pyx_pybuffer_invcov;
__pyx_pybuffer_temp.pybuffer.buf = NULL;
__pyx_pybuffer_temp.refcount = 0;
__pyx_pybuffernd_temp.data = NULL;
__pyx_pybuffernd_temp.rcbuffer = &__pyx_pybuffer_temp;
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
else {
PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_full_invcov); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_75obtain_full_invcov)) {
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 1749, __pyx_L1_error) }
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_6 = __pyx_t_1; __pyx_t_7 = NULL;
__pyx_t_8 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_model, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1749, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_model, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1749, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
{
__pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
if (__pyx_t_7) {
__Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
}
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5);
__Pyx_INCREF(__pyx_v_model);
__Pyx_GIVEREF(__pyx_v_model);
PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_v_model);
__Pyx_INCREF(__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, __pyx_v_contactMatrix);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
if (unlikely(type_dict_guard != tp_dict_version)) {
tp_dict_version = obj_dict_version = 0;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_temp.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_invcov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_temp.rcbuffer->pybuffer);
__pyx_L2:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xf, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__Pyx_XDECREF((PyObject *)__pyx_v_invcov);
__Pyx_XDECREF((PyObject *)__pyx_v_temp);
__Pyx_XDECREF(__pyx_v_full_cov_inv);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_75obtain_full_invcov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_75obtain_full_invcov(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_model = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_invcov (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_model,&__pyx_n_s_contactMatrix,0};
PyObject* values[5] = {0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov", 1, 5, 5, 1); __PYX_ERR(0, 1749, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov", 1, 5, 5, 2); __PYX_ERR(0, 1749, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov", 1, 5, 5, 3); __PYX_ERR(0, 1749, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov", 1, 5, 5, 4); __PYX_ERR(0, 1749, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "obtain_full_invcov") < 0)) __PYX_ERR(0, 1749, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 1749, __pyx_L3_error)
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1749, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1749, __pyx_L3_error)
__pyx_v_model = values[3];
__pyx_v_contactMatrix = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1749, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_invcov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_74obtain_full_invcov(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_74obtain_full_invcov(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_invcov", 0);
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 1749, __pyx_L1_error) }
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type_obtain_full_invcov(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1749, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_invcov", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1750: cdef:
+1751: Py_ssize_t dim=self.dim, i
__pyx_t_10 = __pyx_v_self->dim; __pyx_v_dim = __pyx_t_10;
+1752: double [:, :] xm=np.empty((Nf, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1752, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_xm = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1753: double [:] time_points=np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_linspace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_9, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_9, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_4 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_8, __pyx_t_2); __pyx_t_9 = 0; __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1753, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_time_points = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
1754: double [:] xi, xf
1755: double [:, :] cov
1756: np.ndarray[DTYPE_t, ndim=2] invcov, temp
1757: double ti, tf
+1758: xm = self.integrate(x0, 0, Tf, Nf, model, contactMatrix,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_2); __Pyx_INCREF(__pyx_v_model); __Pyx_GIVEREF(__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_v_model); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_v_contactMatrix); __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_2 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1758, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1758, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1); __pyx_v_xm = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1759: method='LSODA', maxNumSteps=self.steps*Nf)
__pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, __pyx_n_u_LSODA) < 0) __PYX_ERR(0, 1759, __pyx_L1_error) __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_self->steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1759, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_maxNumSteps, __pyx_t_4) < 0) __PYX_ERR(0, 1759, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1760: full_cov_inv=[[None]*(Nf-1) for i in range(Nf-1)]
{ /* enter inner scope */
__pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1760, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_10 = (__pyx_v_Nf - 1);
__pyx_t_13 = __pyx_t_10;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_8genexpr2__pyx_v_i = __pyx_t_14;
__pyx_t_2 = PyList_New(1 * (((__pyx_v_Nf - 1)<0) ? 0:(__pyx_v_Nf - 1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1760, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (__pyx_v_Nf - 1); __pyx_temp++) {
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
PyList_SET_ITEM(__pyx_t_2, __pyx_temp, Py_None);
}
}
if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 1760, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
} /* exit inner scope */
__pyx_v_full_cov_inv = __pyx_t_4;
__pyx_t_4 = 0;
+1761: for i in range(Nf-1):
__pyx_t_10 = (__pyx_v_Nf - 1);
__pyx_t_13 = __pyx_t_10;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_i = __pyx_t_14;
+1762: ti = time_points[i]
__pyx_t_15 = __pyx_v_i;
__pyx_v_ti = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_15 * __pyx_v_time_points.strides[0]) )));
+1763: tf = time_points[i+1]
__pyx_t_16 = (__pyx_v_i + 1);
__pyx_v_tf = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_16 * __pyx_v_time_points.strides[0]) )));
+1764: xi = xm[i]
__pyx_t_12.data = __pyx_v_xm.data;
__pyx_t_12.memview = __pyx_v_xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_xm.strides[0];
if ((0)) __PYX_ERR(0, 1764, __pyx_L1_error)
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_xm.shape[1];
__pyx_t_12.strides[0] = __pyx_v_xm.strides[1];
__pyx_t_12.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xi, 1);
__pyx_v_xi = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+1765: xf = xm[i+1]
__pyx_t_12.data = __pyx_v_xm.data;
__pyx_t_12.memview = __pyx_v_xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = (__pyx_v_i + 1);
Py_ssize_t __pyx_tmp_stride = __pyx_v_xm.strides[0];
if ((0)) __PYX_ERR(0, 1765, __pyx_L1_error)
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_xm.shape[1];
__pyx_t_12.strides[0] = __pyx_v_xm.strides[1];
__pyx_t_12.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xf, 1);
__pyx_v_xf = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+1766: _, cov = self.estimate_cond_mean_cov(xi, ti, tf, model, contactMatrix)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->estimate_cond_mean_cov(__pyx_v_self, __pyx_v_xi, __pyx_v_ti, __pyx_v_tf, __pyx_v_model, __pyx_v_contactMatrix); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1766, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_2 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(__pyx_t_9); #else __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_17 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_2 = __pyx_t_17(__pyx_t_1); if (unlikely(!__pyx_t_2)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_2); index = 1; __pyx_t_9 = __pyx_t_17(__pyx_t_1); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); if (__Pyx_IternextUnpackEndCheck(__pyx_t_17(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1766, __pyx_L1_error) __pyx_t_17 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_17 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1766, __pyx_L1_error) __pyx_L8_unpacking_done:; } __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1766, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v__, __pyx_t_2); __pyx_t_2 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1767: self.obtain_time_evol_op(xi, xf, ti, tf, model, contactMatrix)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->obtain_time_evol_op(__pyx_v_self, __pyx_v_xi, __pyx_v_xf, __pyx_v_ti, __pyx_v_tf, __pyx_v_model, __pyx_v_contactMatrix); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1767, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1768: invcov=np.linalg.inv(cov)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_linalg); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_inv); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_1, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1768, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1768, __pyx_L1_error) __pyx_t_18 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_8 < 0)) { PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer, (PyObject*)__pyx_v_invcov, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21); } __pyx_t_19 = __pyx_t_20 = __pyx_t_21 = 0; } __pyx_pybuffernd_invcov.diminfo[0].strides = __pyx_pybuffernd_invcov.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_invcov.diminfo[0].shape = __pyx_pybuffernd_invcov.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_invcov.diminfo[1].strides = __pyx_pybuffernd_invcov.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_invcov.diminfo[1].shape = __pyx_pybuffernd_invcov.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1768, __pyx_L1_error) } __pyx_t_18 = 0; __Pyx_XDECREF_SET(__pyx_v_invcov, ((PyArrayObject *)__pyx_t_4)); __pyx_t_4 = 0;
+1769: full_cov_inv[i][i]=invcov
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_full_cov_inv, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1769, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__Pyx_SetItemInt(__pyx_t_4, __pyx_v_i, ((PyObject *)__pyx_v_invcov), Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1769, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1770: if i>0:
__pyx_t_22 = ((__pyx_v_i > 0) != 0);
if (__pyx_t_22) {
/* … */
}
}
+1771: temp = invcov@self.U
__pyx_t_4 = __Pyx_PyNumber_MatrixMultiply(((PyObject *)__pyx_v_invcov), ((PyObject *)__pyx_v_self->U)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1771, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1771, __pyx_L1_error) __pyx_t_18 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_temp.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_temp.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_8 < 0)) { PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_temp.rcbuffer->pybuffer, (PyObject*)__pyx_v_temp, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19); } __pyx_t_21 = __pyx_t_20 = __pyx_t_19 = 0; } __pyx_pybuffernd_temp.diminfo[0].strides = __pyx_pybuffernd_temp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_temp.diminfo[0].shape = __pyx_pybuffernd_temp.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_temp.diminfo[1].strides = __pyx_pybuffernd_temp.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_temp.diminfo[1].shape = __pyx_pybuffernd_temp.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1771, __pyx_L1_error) } __pyx_t_18 = 0; __Pyx_XDECREF_SET(__pyx_v_temp, ((PyArrayObject *)__pyx_t_4)); __pyx_t_4 = 0;
+1772: full_cov_inv[i-1][i-1] += np.transpose(self.U)@temp
__pyx_t_23 = (__pyx_v_i - 1);
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_full_cov_inv, __pyx_t_23, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_23 = (__pyx_v_i - 1);
__pyx_t_9 = __Pyx_GetItemInt(__pyx_t_4, __pyx_t_23, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_transpose); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_1)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
}
}
__pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, ((PyObject *)__pyx_v_self->U)) : __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_self->U));
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_2, ((PyObject *)__pyx_v_temp)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_9, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1772, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(__Pyx_SetItemInt(__pyx_t_4, __pyx_t_23, __pyx_t_2, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1772, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1773: full_cov_inv[i-1][i]=-np.transpose(self.U)@invcov
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_transpose); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_2, ((PyObject *)__pyx_v_self->U)) : __Pyx_PyObject_CallOneArg(__pyx_t_6, ((PyObject *)__pyx_v_self->U)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Negative(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_6, ((PyObject *)__pyx_v_invcov)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_23 = (__pyx_v_i - 1); __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_full_cov_inv, __pyx_t_23, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1773, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (unlikely(__Pyx_SetItemInt(__pyx_t_6, __pyx_v_i, __pyx_t_4, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1773, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1774: full_cov_inv[i][i-1]=-temp
__pyx_t_4 = PyNumber_Negative(((PyObject *)__pyx_v_temp)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_full_cov_inv, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1774, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_23 = (__pyx_v_i - 1); if (unlikely(__Pyx_SetItemInt(__pyx_t_6, __pyx_t_23, __pyx_t_4, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1774, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1775: full_cov_inv=sparse.bmat(full_cov_inv, format='csc').todense()
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_sparse); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_bmat); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_full_cov_inv); __Pyx_GIVEREF(__pyx_v_full_cov_inv); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_full_cov_inv); __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_format, __pyx_n_u_csc) < 0) __PYX_ERR(0, 1775, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_todense); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_9); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1775, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF_SET(__pyx_v_full_cov_inv, __pyx_t_4); __pyx_t_4 = 0;
+1776: return full_cov_inv # returns invcov for all but first (fixed!) time point
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_full_cov_inv); __pyx_r = __pyx_v_full_cov_inv; goto __pyx_L0;
1777:
+1778: cpdef obtain_full_mean_cov_tangent_space(self, double [:] x0, double Tf, Py_ssize_t Nf, model, contactMatrix):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_77obtain_full_mean_cov_tangent_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_obtain_full_mean_cov_tangent_space(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix, int __pyx_skip_dispatch) {
Py_ssize_t __pyx_v_dim;
Py_ssize_t __pyx_v_i;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xt = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cond_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_U = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J_dt = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_temp = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_full_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_t;
double __pyx_v_dt;
Py_ssize_t __pyx_v_j;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov_tangent_space", 0);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
else {
PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_full_mean_cov_tangent_spa); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_77obtain_full_mean_cov_tangent_space)) {
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 1778, __pyx_L1_error) }
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_6 = __pyx_t_1; __pyx_t_7 = NULL;
__pyx_t_8 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_model, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1778, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_model, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1778, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
{
__pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
if (__pyx_t_7) {
__Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
}
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5);
__Pyx_INCREF(__pyx_v_model);
__Pyx_GIVEREF(__pyx_v_model);
PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_v_model);
__Pyx_INCREF(__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, __pyx_v_contactMatrix);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
if (unlikely(type_dict_guard != tp_dict_version)) {
tp_dict_version = obj_dict_version = 0;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_14, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_24, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_25, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_26, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cond_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_U, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J_dt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_temp, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_full_cov, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_77obtain_full_mean_cov_tangent_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_77obtain_full_mean_cov_tangent_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_model = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov_tangent_space (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_model,&__pyx_n_s_contactMatrix,0};
PyObject* values[5] = {0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov_tangent_space", 1, 5, 5, 1); __PYX_ERR(0, 1778, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov_tangent_space", 1, 5, 5, 2); __PYX_ERR(0, 1778, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov_tangent_space", 1, 5, 5, 3); __PYX_ERR(0, 1778, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov_tangent_space", 1, 5, 5, 4); __PYX_ERR(0, 1778, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "obtain_full_mean_cov_tangent_space") < 0)) __PYX_ERR(0, 1778, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 1778, __pyx_L3_error)
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1778, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1778, __pyx_L3_error)
__pyx_v_model = values[3];
__pyx_v_contactMatrix = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("obtain_full_mean_cov_tangent_space", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1778, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_76obtain_full_mean_cov_tangent_space(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_76obtain_full_mean_cov_tangent_space(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_mean_cov_tangent_space", 0);
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 1778, __pyx_L1_error) }
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type_obtain_full_mean_cov_tangent_space(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1778, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_mean_cov_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1779: cdef:
+1780: Py_ssize_t dim=self.dim, i
__pyx_t_10 = __pyx_v_self->dim; __pyx_v_dim = __pyx_t_10;
+1781: double [:, :] xm=np.empty((Nf, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1781, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_xm = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1782: double [:] time_points=np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_linspace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_9, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_9, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_4 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_8, __pyx_t_2); __pyx_t_9 = 0; __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1782, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_time_points = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
1783: double [:] xt
1784: double [:, :] cov, cond_cov, U, J_dt, temp
1785: double [:, :, :, :] full_cov
+1786: double t, dt=time_points[1]
__pyx_t_13 = 1; __pyx_v_dt = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_13 * __pyx_v_time_points.strides[0]) )));
+1787: xm = self.integrate(x0, 0, Tf, Nf, model, contactMatrix,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_2); __Pyx_INCREF(__pyx_v_model); __Pyx_GIVEREF(__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_v_model); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_v_contactMatrix); __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_2 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1787, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1787, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1); __pyx_v_xm = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1788: method='LSODA', maxNumSteps=self.steps*Nf)
__pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, __pyx_n_u_LSODA) < 0) __PYX_ERR(0, 1788, __pyx_L1_error) __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_self->steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1788, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_maxNumSteps, __pyx_t_4) < 0) __PYX_ERR(0, 1788, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1789: full_cov = np.zeros((Nf-1, dim, Nf-1, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_Nf - 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_t_6); __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_14 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_14.memview)) __PYX_ERR(0, 1789, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_full_cov = __pyx_t_14; __pyx_t_14.memview = NULL; __pyx_t_14.data = NULL;
+1790: cov = np.zeros((dim, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1790, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1791: for i in range(Nf-1):
__pyx_t_10 = (__pyx_v_Nf - 1);
__pyx_t_15 = __pyx_t_10;
for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
__pyx_v_i = __pyx_t_16;
+1792: t = time_points[i]
__pyx_t_17 = __pyx_v_i;
__pyx_v_t = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_17 * __pyx_v_time_points.strides[0]) )));
+1793: xt = xm[i]
__pyx_t_12.data = __pyx_v_xm.data;
__pyx_t_12.memview = __pyx_v_xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_xm.strides[0];
if ((0)) __PYX_ERR(0, 1793, __pyx_L1_error)
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_xm.shape[1];
__pyx_t_12.strides[0] = __pyx_v_xm.strides[1];
__pyx_t_12.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__pyx_v_xt = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+1794: self.compute_jacobian_and_b_matrix(xt, t, contactMatrix,
__pyx_t_18.__pyx_n = 2;
__pyx_t_18.b_matrix = Py_True;
__pyx_t_18.jacobian = Py_True;
__pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_v_self, __pyx_v_xt, __pyx_v_t, __pyx_v_contactMatrix, &__pyx_t_18); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1794, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1795: b_matrix=True, jacobian=True)
+1796: cond_cov = np.multiply(dt, self.convert_vec_to_mat(self.B_vec))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_multiply); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->B_vec), PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1796, __pyx_L1_error) __pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->convert_vec_to_mat(__pyx_v_self, __pyx_t_12, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; __pyx_t_9 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_2, __pyx_t_5}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1796, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_2, __pyx_t_5}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1796, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_5); __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1796, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1796, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cond_cov, 1); __pyx_v_cond_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1797: if False in np.isfinite(self.B_vec):
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_isfinite); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, ((PyObject *)__pyx_v_self->B_vec)) : __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self->B_vec)); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1797, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_19 = (__Pyx_PySequence_ContainsTF(Py_False, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_19 < 0)) __PYX_ERR(0, 1797, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_20 = (__pyx_t_19 != 0); if (__pyx_t_20) { /* … */ }
+1798: print(np.array(xt), t, self.B_vec)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_xt, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6); __Pyx_INCREF(((PyObject *)__pyx_v_self->B_vec)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->B_vec)); PyTuple_SET_ITEM(__pyx_t_4, 2, ((PyObject *)__pyx_v_self->B_vec)); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_print, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1798, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1799: J_dt = np.multiply(dt, self.J_mat)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_multiply); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, ((PyObject *)__pyx_v_self->J_mat)}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1799, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, ((PyObject *)__pyx_v_self->J_mat)}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1799, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_8, __pyx_t_4); __Pyx_INCREF(((PyObject *)__pyx_v_self->J_mat)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->J_mat)); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_8, ((PyObject *)__pyx_v_self->J_mat)); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1799, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_J_dt, 1); __pyx_v_J_dt = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1800: U = np.add(np.identity(dim), J_dt)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_identity); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_9, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_J_dt, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_t_5}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_1, __pyx_t_5}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1800, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_U, 1); __pyx_v_U = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1801: cov = np.dot(np.dot(U, cov), U.T)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_dot); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_dot); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_U, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_5, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_5, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_11 = __pyx_v_U; __PYX_INC_MEMVIEW(&__pyx_t_11, 1); if (unlikely(__pyx_memslice_transpose(&__pyx_t_11) == 0)) __PYX_ERR(0, 1801, __pyx_L1_error) __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_11, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_2, __pyx_t_1}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_2, __pyx_t_1}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1801, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1802: cov = np.add(cov, cond_cov)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_add); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_cond_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_9, __pyx_t_1}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1802, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_t_9, __pyx_t_1}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1802, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_1); __pyx_t_9 = 0; __pyx_t_1 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1802, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1802, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1803: full_cov[i, :, i, :] = cov
__pyx_t_11.data = __pyx_v_full_cov.data;
__pyx_t_11.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_11, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
if ((0)) __PYX_ERR(0, 1803, __pyx_L1_error)
__pyx_t_11.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_11.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_11.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_11.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
if ((0)) __PYX_ERR(0, 1803, __pyx_L1_error)
__pyx_t_11.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_11.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_11.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_11.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_cov, __pyx_t_11, 2, 2, 0) < 0)) __PYX_ERR(0, 1803, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__pyx_t_11.memview = NULL;
__pyx_t_11.data = NULL;
+1804: if i>0:
__pyx_t_20 = ((__pyx_v_i > 0) != 0);
if (__pyx_t_20) {
/* … */
}
}
+1805: for j in range(0, i):
__pyx_t_21 = __pyx_v_i;
__pyx_t_22 = __pyx_t_21;
for (__pyx_t_23 = 0; __pyx_t_23 < __pyx_t_22; __pyx_t_23+=1) {
__pyx_v_j = __pyx_t_23;
+1806: temp = np.dot(full_cov[j, :, i-1, :], U.T)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dot); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_24.data = __pyx_v_full_cov.data; __pyx_t_24.memview = __pyx_v_full_cov.memview; __PYX_INC_MEMVIEW(&__pyx_t_24, 0); { Py_ssize_t __pyx_tmp_idx = __pyx_v_j; Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0]; if ((0)) __PYX_ERR(0, 1806, __pyx_L1_error) __pyx_t_24.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_24.shape[0] = __pyx_v_full_cov.shape[1]; __pyx_t_24.strides[0] = __pyx_v_full_cov.strides[1]; __pyx_t_24.suboffsets[0] = -1; { Py_ssize_t __pyx_tmp_idx = (__pyx_v_i - 1); Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2]; if ((0)) __PYX_ERR(0, 1806, __pyx_L1_error) __pyx_t_24.data += __pyx_tmp_idx * __pyx_tmp_stride; } __pyx_t_24.shape[1] = __pyx_v_full_cov.shape[3]; __pyx_t_24.strides[1] = __pyx_v_full_cov.strides[3]; __pyx_t_24.suboffsets[1] = -1; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_t_24, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __PYX_XDEC_MEMVIEW(&__pyx_t_24, 1); __pyx_t_24.memview = NULL; __pyx_t_24.data = NULL; __pyx_t_24 = __pyx_v_U; __PYX_INC_MEMVIEW(&__pyx_t_24, 1); if (unlikely(__pyx_memslice_transpose(&__pyx_t_24) == 0)) __PYX_ERR(0, 1806, __pyx_L1_error) __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_t_24, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_24, 1); __pyx_t_24.memview = NULL; __pyx_t_24.data = NULL; __pyx_t_9 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_4, __pyx_t_1}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1806, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_4, __pyx_t_1}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1806, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_8, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_8, __pyx_t_1); __pyx_t_4 = 0; __pyx_t_1 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1806, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_24 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_6, PyBUF_WRITABLE); if (unlikely(!__pyx_t_24.memview)) __PYX_ERR(0, 1806, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_temp, 1); __pyx_v_temp = __pyx_t_24; __pyx_t_24.memview = NULL; __pyx_t_24.data = NULL;
+1807: full_cov[j, :, i, :] = temp
__pyx_t_24.data = __pyx_v_full_cov.data;
__pyx_t_24.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_24, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
if ((0)) __PYX_ERR(0, 1807, __pyx_L1_error)
__pyx_t_24.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_24.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_24.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_24.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
if ((0)) __PYX_ERR(0, 1807, __pyx_L1_error)
__pyx_t_24.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_24.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_24.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_24.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_v_temp, __pyx_t_24, 2, 2, 0) < 0)) __PYX_ERR(0, 1807, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_24, 1);
__pyx_t_24.memview = NULL;
__pyx_t_24.data = NULL;
+1808: full_cov[i, :, j, :] = temp.T
__pyx_t_25 = __pyx_v_temp;
__PYX_INC_MEMVIEW(&__pyx_t_25, 1);
if (unlikely(__pyx_memslice_transpose(&__pyx_t_25) == 0)) __PYX_ERR(0, 1808, __pyx_L1_error)
__pyx_t_26.data = __pyx_v_full_cov.data;
__pyx_t_26.memview = __pyx_v_full_cov.memview;
__PYX_INC_MEMVIEW(&__pyx_t_26, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[0];
if ((0)) __PYX_ERR(0, 1808, __pyx_L1_error)
__pyx_t_26.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_26.shape[0] = __pyx_v_full_cov.shape[1];
__pyx_t_26.strides[0] = __pyx_v_full_cov.strides[1];
__pyx_t_26.suboffsets[0] = -1;
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_j;
Py_ssize_t __pyx_tmp_stride = __pyx_v_full_cov.strides[2];
if ((0)) __PYX_ERR(0, 1808, __pyx_L1_error)
__pyx_t_26.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_26.shape[1] = __pyx_v_full_cov.shape[3];
__pyx_t_26.strides[1] = __pyx_v_full_cov.strides[3];
__pyx_t_26.suboffsets[1] = -1;
if (unlikely(__pyx_memoryview_copy_contents(__pyx_t_25, __pyx_t_26, 2, 2, 0) < 0)) __PYX_ERR(0, 1808, __pyx_L1_error)
__PYX_XDEC_MEMVIEW(&__pyx_t_26, 1);
__pyx_t_26.memview = NULL;
__pyx_t_26.data = NULL;
__PYX_XDEC_MEMVIEW(&__pyx_t_25, 1);
__pyx_t_25.memview = NULL;
__pyx_t_25.data = NULL;
}
+1809: return xm[1:], np.reshape(full_cov, ((Nf-1)*dim, (Nf-1)*dim)) # returns mean and cov for all but first (fixed!) time point
__Pyx_XDECREF(__pyx_r); __pyx_t_25.data = __pyx_v_xm.data; __pyx_t_25.memview = __pyx_v_xm.memview; __PYX_INC_MEMVIEW(&__pyx_t_25, 0); __pyx_t_8 = -1; if (unlikely(__pyx_memoryview_slice_memviewslice( &__pyx_t_25, __pyx_v_xm.shape[0], __pyx_v_xm.strides[0], __pyx_v_xm.suboffsets[0], 0, 0, &__pyx_t_8, 1, 0, 0, 1, 0, 0, 1) < 0)) { __PYX_ERR(0, 1809, __pyx_L1_error) } __pyx_t_25.shape[1] = __pyx_v_xm.shape[1]; __pyx_t_25.strides[1] = __pyx_v_xm.strides[1]; __pyx_t_25.suboffsets[1] = -1; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_t_25, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __PYX_XDEC_MEMVIEW(&__pyx_t_25, 1); __pyx_t_25.memview = NULL; __pyx_t_25.data = NULL; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_full_cov, 4, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t(((__pyx_v_Nf - 1) * __pyx_v_dim)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PyInt_FromSsize_t(((__pyx_v_Nf - 1) * __pyx_v_dim)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_9); __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_9 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_2, __pyx_t_5}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_2, __pyx_t_5}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_5); __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1809, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7); __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1810:
+1811: cpdef obtain_full_invcov_tangent_space(self, double [:] x0, double Tf, Py_ssize_t Nf, model, contactMatrix):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_79obtain_full_invcov_tangent_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_obtain_full_invcov_tangent_space(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix, int __pyx_skip_dispatch) {
Py_ssize_t __pyx_v_dim;
Py_ssize_t __pyx_v_i;
__Pyx_memviewslice __pyx_v_xm = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_time_points = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_xt = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_B_vec = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_U = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J_dt = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_J_mat = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_invcov = 0;
PyArrayObject *__pyx_v_temp = 0;
double __pyx_v_t;
double __pyx_v_dt;
PyObject *__pyx_v_full_cov_inv = NULL;
CYTHON_UNUSED Py_ssize_t __pyx_8genexpr3__pyx_v_i;
__Pyx_LocalBuf_ND __pyx_pybuffernd_invcov;
__Pyx_Buffer __pyx_pybuffer_invcov;
__Pyx_LocalBuf_ND __pyx_pybuffernd_temp;
__Pyx_Buffer __pyx_pybuffer_temp;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_invcov_tangent_space", 0);
__pyx_pybuffer_invcov.pybuffer.buf = NULL;
__pyx_pybuffer_invcov.refcount = 0;
__pyx_pybuffernd_invcov.data = NULL;
__pyx_pybuffernd_invcov.rcbuffer = &__pyx_pybuffer_invcov;
__pyx_pybuffer_temp.pybuffer.buf = NULL;
__pyx_pybuffer_temp.refcount = 0;
__pyx_pybuffernd_temp.data = NULL;
__pyx_pybuffernd_temp.rcbuffer = &__pyx_pybuffer_temp;
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
else {
PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_obtain_full_invcov_tangent_space); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1811, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_79obtain_full_invcov_tangent_space)) {
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 1811, __pyx_L1_error) }
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1811, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1811, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1811, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_6 = __pyx_t_1; __pyx_t_7 = NULL;
__pyx_t_8 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
__pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
if (likely(__pyx_t_7)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_6, function);
__pyx_t_8 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_model, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1811, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_v_model, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 5+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1811, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
#endif
{
__pyx_t_9 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1811, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
if (__pyx_t_7) {
__Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
}
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3);
__Pyx_GIVEREF(__pyx_t_4);
PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5);
__Pyx_INCREF(__pyx_v_model);
__Pyx_GIVEREF(__pyx_v_model);
PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_v_model);
__Pyx_INCREF(__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, __pyx_v_contactMatrix);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1811, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
if (unlikely(type_dict_guard != tp_dict_version)) {
tp_dict_version = obj_dict_version = 0;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_temp.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_invcov_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_temp.rcbuffer->pybuffer);
__pyx_L2:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_time_points, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B_vec, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_U, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J_dt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J_mat, 1);
__Pyx_XDECREF((PyObject *)__pyx_v_invcov);
__Pyx_XDECREF((PyObject *)__pyx_v_temp);
__Pyx_XDECREF(__pyx_v_full_cov_inv);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_79obtain_full_invcov_tangent_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_79obtain_full_invcov_tangent_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_Tf;
Py_ssize_t __pyx_v_Nf;
PyObject *__pyx_v_model = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_invcov_tangent_space (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_Tf,&__pyx_n_s_Nf,&__pyx_n_s_model,&__pyx_n_s_contactMatrix,0};
PyObject* values[5] = {0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov_tangent_space", 1, 5, 5, 1); __PYX_ERR(0, 1811, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov_tangent_space", 1, 5, 5, 2); __PYX_ERR(0, 1811, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov_tangent_space", 1, 5, 5, 3); __PYX_ERR(0, 1811, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov_tangent_space", 1, 5, 5, 4); __PYX_ERR(0, 1811, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "obtain_full_invcov_tangent_space") < 0)) __PYX_ERR(0, 1811, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 1811, __pyx_L3_error)
__pyx_v_Tf = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_Tf == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1811, __pyx_L3_error)
__pyx_v_Nf = __Pyx_PyIndex_AsSsize_t(values[2]); if (unlikely((__pyx_v_Nf == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1811, __pyx_L3_error)
__pyx_v_model = values[3];
__pyx_v_contactMatrix = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("obtain_full_invcov_tangent_space", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1811, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_invcov_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_78obtain_full_invcov_tangent_space(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_78obtain_full_invcov_tangent_space(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_Tf, Py_ssize_t __pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_full_invcov_tangent_space", 0);
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_x0.memview)) { __Pyx_RaiseUnboundLocalError("x0"); __PYX_ERR(0, 1811, __pyx_L1_error) }
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type_obtain_full_invcov_tangent_space(__pyx_v_self, __pyx_v_x0, __pyx_v_Tf, __pyx_v_Nf, __pyx_v_model, __pyx_v_contactMatrix, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1811, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_full_invcov_tangent_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1812: cdef:
+1813: Py_ssize_t dim=self.dim, i
__pyx_t_10 = __pyx_v_self->dim; __pyx_v_dim = __pyx_t_10;
+1814: double [:, :] xm=np.empty((Nf, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6); __pyx_t_1 = 0; __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_9, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1814, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_xm = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1815: double [:] time_points=np.linspace(0, Tf, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_linspace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_9, __pyx_t_2}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_int_0, __pyx_t_9, __pyx_t_2}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 3+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else #endif { __pyx_t_4 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_8, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_8, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 2+__pyx_t_8, __pyx_t_2); __pyx_t_9 = 0; __pyx_t_2 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1815, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_time_points = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+1816: double [:] xt, B_vec=self.B_vec
__pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->B_vec), PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1816, __pyx_L1_error) __pyx_v_B_vec = __pyx_t_12; __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL;
+1817: double [:, :] cov, U, J_dt, J_mat=self.J_mat
__pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->J_mat), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1817, __pyx_L1_error) __pyx_v_J_mat = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
1818: np.ndarray[DTYPE_t, ndim=2] invcov, temp
+1819: double t, dt=time_points[1]
__pyx_t_13 = 1; __pyx_v_dt = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_13 * __pyx_v_time_points.strides[0]) )));
+1820: xm = self.integrate(x0, 0, Tf, Nf, model, contactMatrix,
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_Tf); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_Nf); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_t_2); __Pyx_INCREF(__pyx_v_model); __Pyx_GIVEREF(__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_9, 4, __pyx_v_model); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_v_contactMatrix); __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_2 = 0; /* … */ __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1820, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_xm, 1); __pyx_v_xm = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1821: method='LSODA', maxNumSteps=self.steps*Nf)
__pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1821, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, __pyx_n_u_LSODA) < 0) __PYX_ERR(0, 1821, __pyx_L1_error) __pyx_t_4 = PyInt_FromSsize_t((__pyx_v_self->steps * __pyx_v_Nf)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1821, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_maxNumSteps, __pyx_t_4) < 0) __PYX_ERR(0, 1821, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1822: full_cov_inv=[[None]*(Nf-1) for i in range(Nf-1)]
{ /* enter inner scope */
__pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1822, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_10 = (__pyx_v_Nf - 1);
__pyx_t_14 = __pyx_t_10;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_8genexpr3__pyx_v_i = __pyx_t_15;
__pyx_t_2 = PyList_New(1 * (((__pyx_v_Nf - 1)<0) ? 0:(__pyx_v_Nf - 1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1822, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
{ Py_ssize_t __pyx_temp;
for (__pyx_temp=0; __pyx_temp < (__pyx_v_Nf - 1); __pyx_temp++) {
__Pyx_INCREF(Py_None);
__Pyx_GIVEREF(Py_None);
PyList_SET_ITEM(__pyx_t_2, __pyx_temp, Py_None);
}
}
if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 1822, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
} /* exit inner scope */
__pyx_v_full_cov_inv = __pyx_t_4;
__pyx_t_4 = 0;
+1823: for i in range(Nf-1):
__pyx_t_10 = (__pyx_v_Nf - 1);
__pyx_t_14 = __pyx_t_10;
for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_i = __pyx_t_15;
+1824: t = time_points[i]
__pyx_t_16 = __pyx_v_i;
__pyx_v_t = (*((double *) ( /* dim=0 */ (__pyx_v_time_points.data + __pyx_t_16 * __pyx_v_time_points.strides[0]) )));
+1825: xt = xm[i]
__pyx_t_12.data = __pyx_v_xm.data;
__pyx_t_12.memview = __pyx_v_xm.memview;
__PYX_INC_MEMVIEW(&__pyx_t_12, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_i;
Py_ssize_t __pyx_tmp_stride = __pyx_v_xm.strides[0];
if ((0)) __PYX_ERR(0, 1825, __pyx_L1_error)
__pyx_t_12.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_12.shape[0] = __pyx_v_xm.shape[1];
__pyx_t_12.strides[0] = __pyx_v_xm.strides[1];
__pyx_t_12.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__pyx_v_xt = __pyx_t_12;
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
+1826: self.compute_jacobian_and_b_matrix(xt, t, contactMatrix,
__pyx_t_17.__pyx_n = 2;
__pyx_t_17.b_matrix = Py_True;
__pyx_t_17.jacobian = Py_True;
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_v_self, __pyx_v_xt, __pyx_v_t, __pyx_v_contactMatrix, &__pyx_t_17); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1826, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
1827: b_matrix=True, jacobian=True)
+1828: cov = np.multiply(dt, self.convert_vec_to_mat(self.B_vec))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_multiply); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->B_vec), PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 1828, __pyx_L1_error) __pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->convert_vec_to_mat(__pyx_v_self, __pyx_t_12, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __PYX_XDEC_MEMVIEW(&__pyx_t_12, 1); __pyx_t_12.memview = NULL; __pyx_t_12.data = NULL; __pyx_t_6 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_1}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1828, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_1}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1828, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_t_1); __pyx_t_2 = 0; __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1828, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1828, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1); __pyx_v_cov = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1829: J_dt = np.multiply(dt, self.J_mat)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_multiply); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyFloat_FromDouble(__pyx_v_dt); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_9, ((PyObject *)__pyx_v_self->J_mat)}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1829, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_9, ((PyObject *)__pyx_v_self->J_mat)}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1829, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_1) { __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL; } __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_8, __pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_v_self->J_mat)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->J_mat)); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_8, ((PyObject *)__pyx_v_self->J_mat)); __pyx_t_9 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1829, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1829, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_J_dt, 1); __pyx_v_J_dt = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1830: U = np.add(np.identity(dim), J_dt)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_add); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_identity); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_J_dt, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_t_1}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_t_1}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_t_1); __pyx_t_5 = 0; __pyx_t_1 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 1830, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_U, 1); __pyx_v_U = __pyx_t_11; __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL;
+1831: invcov=np.linalg.inv(cov)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linalg); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_inv); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_cov, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1831, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1831, __pyx_L1_error) __pyx_t_18 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_8 < 0)) { PyErr_Fetch(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_invcov.rcbuffer->pybuffer, (PyObject*)__pyx_v_invcov, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_19); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_21); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_19, __pyx_t_20, __pyx_t_21); } __pyx_t_19 = __pyx_t_20 = __pyx_t_21 = 0; } __pyx_pybuffernd_invcov.diminfo[0].strides = __pyx_pybuffernd_invcov.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_invcov.diminfo[0].shape = __pyx_pybuffernd_invcov.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_invcov.diminfo[1].strides = __pyx_pybuffernd_invcov.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_invcov.diminfo[1].shape = __pyx_pybuffernd_invcov.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1831, __pyx_L1_error) } __pyx_t_18 = 0; __Pyx_XDECREF_SET(__pyx_v_invcov, ((PyArrayObject *)__pyx_t_4)); __pyx_t_4 = 0;
+1832: full_cov_inv[i][i]=invcov
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_full_cov_inv, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1832, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (unlikely(__Pyx_SetItemInt(__pyx_t_4, __pyx_v_i, ((PyObject *)__pyx_v_invcov), Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1832, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1833: if i>0:
__pyx_t_22 = ((__pyx_v_i > 0) != 0);
if (__pyx_t_22) {
/* … */
}
}
+1834: temp = invcov@U
__pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_U, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(((PyObject *)__pyx_v_invcov), __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1834, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1834, __pyx_L1_error) __pyx_t_18 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_temp.rcbuffer->pybuffer); __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_temp.rcbuffer->pybuffer, (PyObject*)__pyx_t_18, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_8 < 0)) { PyErr_Fetch(&__pyx_t_21, &__pyx_t_20, &__pyx_t_19); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_temp.rcbuffer->pybuffer, (PyObject*)__pyx_v_temp, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_21); Py_XDECREF(__pyx_t_20); Py_XDECREF(__pyx_t_19); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_21, __pyx_t_20, __pyx_t_19); } __pyx_t_21 = __pyx_t_20 = __pyx_t_19 = 0; } __pyx_pybuffernd_temp.diminfo[0].strides = __pyx_pybuffernd_temp.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_temp.diminfo[0].shape = __pyx_pybuffernd_temp.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_temp.diminfo[1].strides = __pyx_pybuffernd_temp.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_temp.diminfo[1].shape = __pyx_pybuffernd_temp.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1834, __pyx_L1_error) } __pyx_t_18 = 0; __Pyx_XDECREF_SET(__pyx_v_temp, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
+1835: full_cov_inv[i-1][i-1] += np.transpose(U)@temp
__pyx_t_23 = (__pyx_v_i - 1);
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_full_cov_inv, __pyx_t_23, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1835, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_23 = (__pyx_v_i - 1);
__pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, __pyx_t_23, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1835, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1835, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_transpose); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1835, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_U, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1835, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_9 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
__pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
if (likely(__pyx_t_9)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_5, function);
}
}
__pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_9, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1);
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1835, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_6, ((PyObject *)__pyx_v_temp)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1835, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_6 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1835, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (unlikely(__Pyx_SetItemInt(__pyx_t_2, __pyx_t_23, __pyx_t_6, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1835, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1836: full_cov_inv[i-1][i]=-np.transpose(U)@invcov
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_transpose); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_U, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Negative(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyNumber_MatrixMultiply(__pyx_t_5, ((PyObject *)__pyx_v_invcov)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_23 = (__pyx_v_i - 1); __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_full_cov_inv, __pyx_t_23, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (unlikely(__Pyx_SetItemInt(__pyx_t_5, __pyx_v_i, __pyx_t_2, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1836, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1837: full_cov_inv[i][i-1]=-temp
__pyx_t_2 = PyNumber_Negative(((PyObject *)__pyx_v_temp)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_full_cov_inv, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_23 = (__pyx_v_i - 1); if (unlikely(__Pyx_SetItemInt(__pyx_t_5, __pyx_t_23, __pyx_t_2, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0) < 0)) __PYX_ERR(0, 1837, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1838: full_cov_inv=sparse.bmat(full_cov_inv, format='csc').todense()
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sparse); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_bmat); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_full_cov_inv); __Pyx_GIVEREF(__pyx_v_full_cov_inv); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_full_cov_inv); __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_format, __pyx_n_u_csc) < 0) __PYX_ERR(0, 1838, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_todense); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1838, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF_SET(__pyx_v_full_cov_inv, __pyx_t_2); __pyx_t_2 = 0;
+1839: return full_cov_inv # returns invcov for all but first (fixed!) time point
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_full_cov_inv); __pyx_r = __pyx_v_full_cov_inv; goto __pyx_L0;
1840:
+1841: cpdef find_fastest_growing_lin_mode(self, double t, contactMatrix):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_81find_fastest_growing_lin_mode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_find_fastest_growing_lin_mode(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, double __pyx_v_t, PyObject *__pyx_v_contactMatrix, int __pyx_skip_dispatch) {
PyArrayObject *__pyx_v_J = 0;
PyArrayObject *__pyx_v_x0 = 0;
PyArrayObject *__pyx_v_v = 0;
CYTHON_UNUSED PyArrayObject *__pyx_v_mode = 0;
PyObject *__pyx_v_indices = 0;
Py_ssize_t __pyx_v_S_index;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_j;
Py_ssize_t __pyx_v_n_inf;
PyObject *__pyx_v_sign = NULL;
PyObject *__pyx_v_eigvec = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
__Pyx_LocalBuf_ND __pyx_pybuffernd_J;
__Pyx_Buffer __pyx_pybuffer_J;
__Pyx_LocalBuf_ND __pyx_pybuffernd_mode;
__Pyx_Buffer __pyx_pybuffer_mode;
__Pyx_LocalBuf_ND __pyx_pybuffernd_v;
__Pyx_Buffer __pyx_pybuffer_v;
__Pyx_LocalBuf_ND __pyx_pybuffernd_x0;
__Pyx_Buffer __pyx_pybuffer_x0;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("find_fastest_growing_lin_mode", 0);
__pyx_pybuffer_J.pybuffer.buf = NULL;
__pyx_pybuffer_J.refcount = 0;
__pyx_pybuffernd_J.data = NULL;
__pyx_pybuffernd_J.rcbuffer = &__pyx_pybuffer_J;
__pyx_pybuffer_x0.pybuffer.buf = NULL;
__pyx_pybuffer_x0.refcount = 0;
__pyx_pybuffernd_x0.data = NULL;
__pyx_pybuffernd_x0.rcbuffer = &__pyx_pybuffer_x0;
__pyx_pybuffer_v.pybuffer.buf = NULL;
__pyx_pybuffer_v.refcount = 0;
__pyx_pybuffernd_v.data = NULL;
__pyx_pybuffernd_v.rcbuffer = &__pyx_pybuffer_v;
__pyx_pybuffer_mode.pybuffer.buf = NULL;
__pyx_pybuffer_mode.refcount = 0;
__pyx_pybuffernd_mode.data = NULL;
__pyx_pybuffernd_mode.rcbuffer = &__pyx_pybuffer_mode;
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
else {
PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_fastest_growing_lin_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1841, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_81find_fastest_growing_lin_mode)) {
__Pyx_XDECREF(__pyx_r);
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1841, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
__pyx_t_6 = 0;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
__pyx_t_6 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1841, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_3, __pyx_v_contactMatrix};
__pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1841, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
{
__pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1841, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (__pyx_t_5) {
__Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
}
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
__Pyx_INCREF(__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_contactMatrix);
__pyx_t_3 = 0;
__pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1841, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
if (unlikely(type_dict_guard != tp_dict_version)) {
tp_dict_version = obj_dict_version = 0;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_13, 1);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_J.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mode.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_v.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("pyross.inference.SIR_type.find_fastest_growing_lin_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_J.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mode.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_v.rcbuffer->pybuffer);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer);
__pyx_L2:;
__Pyx_XDECREF((PyObject *)__pyx_v_J);
__Pyx_XDECREF((PyObject *)__pyx_v_x0);
__Pyx_XDECREF((PyObject *)__pyx_v_v);
__Pyx_XDECREF((PyObject *)__pyx_v_mode);
__Pyx_XDECREF(__pyx_v_indices);
__Pyx_XDECREF(__pyx_v_sign);
__Pyx_XDECREF(__pyx_v_eigvec);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_81find_fastest_growing_lin_mode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_81find_fastest_growing_lin_mode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
double __pyx_v_t;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("find_fastest_growing_lin_mode (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_contactMatrix,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("find_fastest_growing_lin_mode", 1, 2, 2, 1); __PYX_ERR(0, 1841, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "find_fastest_growing_lin_mode") < 0)) __PYX_ERR(0, 1841, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_t = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1841, __pyx_L3_error)
__pyx_v_contactMatrix = values[1];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("find_fastest_growing_lin_mode", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1841, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.find_fastest_growing_lin_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_80find_fastest_growing_lin_mode(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_t, __pyx_v_contactMatrix);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_80find_fastest_growing_lin_mode(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, double __pyx_v_t, PyObject *__pyx_v_contactMatrix) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("find_fastest_growing_lin_mode", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type_find_fastest_growing_lin_mode(__pyx_v_self, __pyx_v_t, __pyx_v_contactMatrix, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1841, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.find_fastest_growing_lin_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1842: cdef:
1843: np.ndarray [DTYPE_t, ndim=2] J
+1844: np.ndarray [DTYPE_t, ndim=1] x0, v, mode=np.empty((self.dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 1844, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1844, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1844, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_7); { __Pyx_BufFmt_StackElem __pyx_stack[1]; if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mode.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { __pyx_v_mode = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None); __pyx_pybuffernd_mode.rcbuffer->pybuffer.buf = NULL; __PYX_ERR(0, 1844, __pyx_L1_error) } else {__pyx_pybuffernd_mode.diminfo[0].strides = __pyx_pybuffernd_mode.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mode.diminfo[0].shape = __pyx_pybuffernd_mode.rcbuffer->pybuffer.shape[0]; } } __pyx_t_8 = 0; __pyx_v_mode = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0;
1845: list indices
+1846: Py_ssize_t S_index, M=self.M, i, j, n_inf, n, index
__pyx_t_9 = __pyx_v_self->M; __pyx_v_M = __pyx_t_9;
1847: # assume no infected at the start and compute eig vecs for the infectious species
+1848: x0 = np.zeros((self.dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 1848, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1848, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1848, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_x0.rcbuffer->pybuffer); __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); if (unlikely(__pyx_t_6 < 0)) { PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_x0.rcbuffer->pybuffer, (PyObject*)__pyx_v_x0, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); } __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0; } __pyx_pybuffernd_x0.diminfo[0].strides = __pyx_pybuffernd_x0.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_x0.diminfo[0].shape = __pyx_pybuffernd_x0.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1848, __pyx_L1_error) } __pyx_t_8 = 0; __pyx_v_x0 = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+1849: S_index = self.class_index_dict['S']
if (unlikely(__pyx_v_self->class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 1849, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_self->class_index_dict, __pyx_n_u_S); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1849, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_9 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_9 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1849, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_S_index = __pyx_t_9;
+1850: x0[S_index*M:(S_index+1)*M] = self.fi
__pyx_t_2 = ((PyObject *)__pyx_v_self->fi); __Pyx_INCREF(__pyx_t_2); __pyx_t_7 = PyInt_FromSsize_t((__pyx_v_S_index * __pyx_v_M)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t(((__pyx_v_S_index + 1) * __pyx_v_M)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = PySlice_New(__pyx_t_7, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1850, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_x0), __pyx_t_1, __pyx_t_2) < 0)) __PYX_ERR(0, 1850, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1851: self.compute_jacobian_and_b_matrix(x0, t, contactMatrix,
__pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_x0), PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 1851, __pyx_L1_error) /* … */ __pyx_t_14.__pyx_n = 2; __pyx_t_14.b_matrix = Py_False; __pyx_t_14.jacobian = Py_True; __pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_v_self, __pyx_t_13, __pyx_v_t, __pyx_v_contactMatrix, &__pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1851, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1852: b_matrix=False, jacobian=True)
+1853: indices = self.infection_indices()
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_infection_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1853, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(PyList_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "list", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 1853, __pyx_L1_error) __pyx_v_indices = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+1854: n_inf = len(indices)
if (unlikely(__pyx_v_indices == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
__PYX_ERR(0, 1854, __pyx_L1_error)
}
__pyx_t_9 = PyList_GET_SIZE(__pyx_v_indices); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1854, __pyx_L1_error)
__pyx_v_n_inf = __pyx_t_9;
+1855: J = self.J[indices][:, :, indices, :].reshape((n_inf*M, n_inf*M))
__pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->J), __pyx_v_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_slice__2); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_slice__2); __Pyx_INCREF(__pyx_v_indices); __Pyx_GIVEREF(__pyx_v_indices); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_indices); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_slice__2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t((__pyx_v_n_inf * __pyx_v_M)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_n_inf * __pyx_v_M)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1); __pyx_t_7 = 0; __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1855, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1855, __pyx_L1_error) __pyx_t_15 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_J.rcbuffer->pybuffer); __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_J.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_6 < 0)) { PyErr_Fetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_J.rcbuffer->pybuffer, (PyObject*)__pyx_v_J, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_12, __pyx_t_11, __pyx_t_10); } __pyx_t_12 = __pyx_t_11 = __pyx_t_10 = 0; } __pyx_pybuffernd_J.diminfo[0].strides = __pyx_pybuffernd_J.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_J.diminfo[0].shape = __pyx_pybuffernd_J.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_J.diminfo[1].strides = __pyx_pybuffernd_J.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_J.diminfo[1].shape = __pyx_pybuffernd_J.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1855, __pyx_L1_error) } __pyx_t_15 = 0; __pyx_v_J = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+1856: sign, eigvec = pyross.utils.largest_real_eig(J)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyross); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_largest_real_eig); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_J)) : __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_J)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1856, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1856, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_16 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_16(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_3 = __pyx_t_16(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1856, __pyx_L1_error) __pyx_t_16 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_16 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1856, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_sign = __pyx_t_4; __pyx_t_4 = 0; __pyx_v_eigvec = __pyx_t_3; __pyx_t_3 = 0;
+1857: if not sign: # if eigval not positive, just return the zero state
__pyx_t_17 = __Pyx_PyObject_IsTrue(__pyx_v_sign); if (unlikely(__pyx_t_17 < 0)) __PYX_ERR(0, 1857, __pyx_L1_error) __pyx_t_18 = ((!__pyx_t_17) != 0); if (__pyx_t_18) { /* … */ }
+1858: return x0
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_x0)); __pyx_r = ((PyObject *)__pyx_v_x0); goto __pyx_L0;
1859: else:
+1860: eigvec = np.abs(eigvec)
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1860, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_abs); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1860, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
__pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_eigvec) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_eigvec);
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1860, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF_SET(__pyx_v_eigvec, __pyx_t_2);
__pyx_t_2 = 0;
1861:
1862: # substitute in infections and recompute fastest growing linear mode
+1863: for (j, i) in enumerate(indices):
__pyx_t_9 = 0;
__pyx_t_2 = __pyx_v_indices; __Pyx_INCREF(__pyx_t_2); __pyx_t_19 = 0;
for (;;) {
if (__pyx_t_19 >= PyList_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_19); __Pyx_INCREF(__pyx_t_4); __pyx_t_19++; if (unlikely(0 < 0)) __PYX_ERR(0, 1863, __pyx_L1_error)
#else
__pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_19); __pyx_t_19++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1863, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
#endif
__pyx_t_20 = __Pyx_PyIndex_AsSsize_t(__pyx_t_4); if (unlikely((__pyx_t_20 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1863, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_i = __pyx_t_20;
__pyx_v_j = __pyx_t_9;
__pyx_t_9 = (__pyx_t_9 + 1);
/* … */
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1864: x0[i*M:(i+1)*M] = eigvec[j*M:(j+1)*M]
__pyx_t_4 = __Pyx_PyObject_GetSlice(__pyx_v_eigvec, (__pyx_v_j * __pyx_v_M), ((__pyx_v_j + 1) * __pyx_v_M), NULL, NULL, NULL, 1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_i * __pyx_v_M)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyInt_FromSsize_t(((__pyx_v_i + 1) * __pyx_v_M)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = PySlice_New(__pyx_t_3, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1864, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_x0), __pyx_t_7, __pyx_t_4) < 0)) __PYX_ERR(0, 1864, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+1865: self.compute_jacobian_and_b_matrix(x0, t, contactMatrix,
__pyx_t_13 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_x0), PyBUF_WRITABLE); if (unlikely(!__pyx_t_13.memview)) __PYX_ERR(0, 1865, __pyx_L1_error) /* … */ __pyx_t_14.__pyx_n = 2; __pyx_t_14.b_matrix = Py_False; __pyx_t_14.jacobian = Py_True; __pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->compute_jacobian_and_b_matrix(__pyx_v_self, __pyx_t_13, __pyx_v_t, __pyx_v_contactMatrix, &__pyx_t_14); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1865, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __PYX_XDEC_MEMVIEW(&__pyx_t_13, 1); __pyx_t_13.memview = NULL; __pyx_t_13.data = NULL; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
1866: b_matrix=False, jacobian=True)
+1867: _, v = pyross.utils.largest_real_eig(self.J_mat)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyross); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_largest_real_eig); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, ((PyObject *)__pyx_v_self->J_mat)) : __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self->J_mat)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 1867, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_4 = PyList_GET_ITEM(sequence, 0); __pyx_t_7 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(__pyx_t_7); #else __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1867, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_16 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_4 = __pyx_t_16(__pyx_t_1); if (unlikely(!__pyx_t_4)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); index = 1; __pyx_t_7 = __pyx_t_16(__pyx_t_1); if (unlikely(!__pyx_t_7)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_7); if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_1), 2) < 0) __PYX_ERR(0, 1867, __pyx_L1_error) __pyx_t_16 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_16 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 1867, __pyx_L1_error) __pyx_L9_unpacking_done:; } if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1867, __pyx_L1_error) __pyx_v__ = __pyx_t_4; __pyx_t_4 = 0; __pyx_t_8 = ((PyArrayObject *)__pyx_t_7); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_v.rcbuffer->pybuffer); __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_v.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); if (unlikely(__pyx_t_6 < 0)) { PyErr_Fetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_v.rcbuffer->pybuffer, (PyObject*)__pyx_v_v, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_10, __pyx_t_11, __pyx_t_12); } __pyx_t_10 = __pyx_t_11 = __pyx_t_12 = 0; } __pyx_pybuffernd_v.diminfo[0].strides = __pyx_pybuffernd_v.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_v.diminfo[0].shape = __pyx_pybuffernd_v.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1867, __pyx_L1_error) } __pyx_t_8 = 0; __pyx_v_v = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0;
+1868: if v[S_index*M] > 0:
__pyx_t_21 = (__pyx_v_S_index * __pyx_v_M);
__pyx_t_18 = (((*__Pyx_BufPtrStrided1d(__pyx_t_6pyross_9inference_DTYPE_t *, __pyx_pybuffernd_v.rcbuffer->pybuffer.buf, __pyx_t_21, __pyx_pybuffernd_v.diminfo[0].strides)) > 0.0) != 0);
if (__pyx_t_18) {
/* … */
}
+1869: v = - v
__pyx_t_2 = PyNumber_Negative(((PyObject *)__pyx_v_v)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1869, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1869, __pyx_L1_error) __pyx_t_8 = ((PyArrayObject *)__pyx_t_2); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_v.rcbuffer->pybuffer); __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_v.rcbuffer->pybuffer, (PyObject*)__pyx_t_8, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack); if (unlikely(__pyx_t_6 < 0)) { PyErr_Fetch(&__pyx_t_12, &__pyx_t_11, &__pyx_t_10); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_v.rcbuffer->pybuffer, (PyObject*)__pyx_v_v, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_12, __pyx_t_11, __pyx_t_10); } __pyx_t_12 = __pyx_t_11 = __pyx_t_10 = 0; } __pyx_pybuffernd_v.diminfo[0].strides = __pyx_pybuffernd_v.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_v.diminfo[0].shape = __pyx_pybuffernd_v.rcbuffer->pybuffer.shape[0]; if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 1869, __pyx_L1_error) } __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_v, ((PyArrayObject *)__pyx_t_2)); __pyx_t_2 = 0;
+1870: return v
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_v)); __pyx_r = ((PyObject *)__pyx_v_v); goto __pyx_L0; }
1871:
1872:
1873:
+1874: cdef obtain_time_evol_op(self, double [:] x0, double [:] xf, double t1, double t2, model, contactMatrix):
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_obtain_time_evol_op(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, __Pyx_memviewslice __pyx_v_xf, double __pyx_v_t1, double __pyx_v_t2, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
__Pyx_memviewslice __pyx_v_U = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_epsilon;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_j;
Py_ssize_t __pyx_v_steps;
PyObject *__pyx_v_pos = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_time_evol_op", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("pyross.inference.SIR_type.obtain_time_evol_op", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_U, 1);
__Pyx_XDECREF(__pyx_v_pos);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1875: cdef:
+1876: double [:, :] U=self.U
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->U), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 1876, __pyx_L1_error) __pyx_v_U = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+1877: double epsilon=1./self.N
__pyx_v_epsilon = (1. / __pyx_v_self->N);
+1878: Py_ssize_t i, j, steps=self.steps
__pyx_t_2 = __pyx_v_self->steps; __pyx_v_steps = __pyx_t_2;
+1879: for i in range(self.dim):
__pyx_t_2 = __pyx_v_self->dim;
__pyx_t_3 = __pyx_t_2;
for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
__pyx_v_i = __pyx_t_4;
+1880: x0[i] += epsilon
__pyx_t_5 = __pyx_v_i;
*((double *) ( /* dim=0 */ (__pyx_v_x0.data + __pyx_t_5 * __pyx_v_x0.strides[0]) )) += __pyx_v_epsilon;
+1881: pos = self.integrate(x0, t1, t2, steps, model, contactMatrix)[steps-1]
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = NULL; __pyx_t_13 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_13 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[7] = {__pyx_t_12, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_v_model, __pyx_v_contactMatrix}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 6+__pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[7] = {__pyx_t_12, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_v_model, __pyx_v_contactMatrix}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_13, 6+__pyx_t_13); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_14 = PyTuple_New(6+__pyx_t_13); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_12); __pyx_t_12 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_14, 0+__pyx_t_13, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_14, 1+__pyx_t_13, __pyx_t_9); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_14, 2+__pyx_t_13, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_14, 3+__pyx_t_13, __pyx_t_11); __Pyx_INCREF(__pyx_v_model); __Pyx_GIVEREF(__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_14, 4+__pyx_t_13, __pyx_v_model); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_14, 5+__pyx_t_13, __pyx_v_contactMatrix); __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_14, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_15 = (__pyx_v_steps - 1); __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_6, __pyx_t_15, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1881, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_pos, __pyx_t_7); __pyx_t_7 = 0;
+1882: for j in range(self.dim):
__pyx_t_15 = __pyx_v_self->dim;
__pyx_t_16 = __pyx_t_15;
for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
__pyx_v_j = __pyx_t_17;
+1883: U[j, i] = (pos[j]-xf[j])/(epsilon)
__pyx_t_7 = __Pyx_GetItemInt(__pyx_v_pos, __pyx_v_j, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_18 = __pyx_v_j; __pyx_t_6 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_xf.data + __pyx_t_18 * __pyx_v_xf.strides[0]) )))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_14 = PyNumber_Subtract(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyFloat_FromDouble(__pyx_v_epsilon); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_14, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_19 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_19 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1883, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_20 = __pyx_v_j; __pyx_t_21 = __pyx_v_i; *((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_U.data + __pyx_t_20 * __pyx_v_U.strides[0]) ) + __pyx_t_21 * __pyx_v_U.strides[1]) )) = __pyx_t_19; }
+1884: x0[i] -= epsilon
__pyx_t_22 = __pyx_v_i;
*((double *) ( /* dim=0 */ (__pyx_v_x0.data + __pyx_t_22 * __pyx_v_x0.strides[0]) )) -= __pyx_v_epsilon;
}
1885:
+1886: cdef compute_dsigdt(self, double [:] sig):
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_compute_dsigdt(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_sig) {
Py_ssize_t __pyx_v_i;
__Pyx_memviewslice __pyx_v_dsigdt = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B_vec = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_linear_term_vec = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_sigma_mat = { 0, 0, { 0 }, { 0 }, { 0 } };
PyArrayObject *__pyx_v_linear_term = 0;
__Pyx_LocalBuf_ND __pyx_pybuffernd_linear_term;
__Pyx_Buffer __pyx_pybuffer_linear_term;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_dsigdt", 0);
__pyx_pybuffer_linear_term.pybuffer.buf = NULL;
__pyx_pybuffer_linear_term.refcount = 0;
__pyx_pybuffernd_linear_term.data = NULL;
__pyx_pybuffernd_linear_term.rcbuffer = &__pyx_pybuffer_linear_term;
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__Pyx_XDECREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
{ PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
__Pyx_PyThreadState_declare
__Pyx_PyThreadState_assign
__Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer);
__Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
__Pyx_AddTraceback("pyross.inference.SIR_type.compute_dsigdt", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
goto __pyx_L2;
__pyx_L0:;
__Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer);
__pyx_L2:;
__PYX_XDEC_MEMVIEW(&__pyx_v_dsigdt, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B_vec, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_linear_term_vec, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_sigma_mat, 1);
__Pyx_XDECREF((PyObject *)__pyx_v_linear_term);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1887: cdef:
1888: Py_ssize_t i, j
+1889: double [:] dsigdt=self.dsigmadt, B_vec=self.B_vec, linear_term_vec
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->dsigmadt), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 1889, __pyx_L1_error) __pyx_v_dsigdt = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->B_vec), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 1889, __pyx_L1_error) __pyx_v_B_vec = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
1890: double [:, :] sigma_mat
1891: np.ndarray[DTYPE_t, ndim=2] linear_term
+1892: sigma_mat = self.convert_vec_to_mat(sig)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR_type *)__pyx_v_self->__pyx_vtab)->convert_vec_to_mat(__pyx_v_self, __pyx_v_sig, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1892, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 1892, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_sigma_mat = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+1893: linear_term = np.dot(self.J_mat, sigma_mat) + np.dot(sigma_mat, (self.J_mat).T)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_dot); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __pyx_memoryview_fromslice(__pyx_v_sigma_mat, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self->J_mat), __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self->J_mat), __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(((PyObject *)__pyx_v_self->J_mat)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->J_mat)); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, ((PyObject *)__pyx_v_self->J_mat)); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_dot); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_sigma_mat, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->J_mat), __pyx_n_s_T); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_6}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_8, __pyx_t_6}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_10 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_7, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_7, __pyx_t_6); __pyx_t_8 = 0; __pyx_t_6 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1893, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 1893, __pyx_L1_error) __pyx_t_11 = ((PyArrayObject *)__pyx_t_4); { __Pyx_BufFmt_StackElem __pyx_stack[1]; __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer); __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack); if (unlikely(__pyx_t_7 < 0)) { PyErr_Fetch(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14); if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_linear_term.rcbuffer->pybuffer, (PyObject*)__pyx_v_linear_term, &__Pyx_TypeInfo_nn___pyx_t_6pyross_9inference_DTYPE_t, PyBUF_FORMAT| PyBUF_STRIDES, 2, 0, __pyx_stack) == -1)) { Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_14); __Pyx_RaiseBufferFallbackError(); } else { PyErr_Restore(__pyx_t_12, __pyx_t_13, __pyx_t_14); } __pyx_t_12 = __pyx_t_13 = __pyx_t_14 = 0; } __pyx_pybuffernd_linear_term.diminfo[0].strides = __pyx_pybuffernd_linear_term.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_linear_term.diminfo[0].shape = __pyx_pybuffernd_linear_term.rcbuffer->pybuffer.shape[0]; __pyx_pybuffernd_linear_term.diminfo[1].strides = __pyx_pybuffernd_linear_term.rcbuffer->pybuffer.strides[1]; __pyx_pybuffernd_linear_term.diminfo[1].shape = __pyx_pybuffernd_linear_term.rcbuffer->pybuffer.shape[1]; if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1893, __pyx_L1_error) } __pyx_t_11 = 0; __pyx_v_linear_term = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+1894: linear_term_vec = linear_term[(self.rows, self.cols)]
__pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(((PyObject *)__pyx_v_self->rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->rows)); PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self->rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->cols)); PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self->cols)); __pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_term), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1894, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 1894, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_linear_term_vec = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+1895: for i in range(self.vec_size):
__pyx_t_15 = __pyx_v_self->vec_size;
__pyx_t_16 = __pyx_t_15;
for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
__pyx_v_i = __pyx_t_17;
+1896: dsigdt[i] = B_vec[i] + linear_term_vec[i]
__pyx_t_18 = __pyx_v_i;
__pyx_t_19 = __pyx_v_i;
__pyx_t_20 = __pyx_v_i;
*((double *) ( /* dim=0 */ (__pyx_v_dsigdt.data + __pyx_t_20 * __pyx_v_dsigdt.strides[0]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_B_vec.data + __pyx_t_18 * __pyx_v_B_vec.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_linear_term_vec.data + __pyx_t_19 * __pyx_v_linear_term_vec.strides[0]) ))));
}
1897:
+1898: cpdef convert_vec_to_mat(self, double [:] cov):
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_83convert_vec_to_mat(PyObject *__pyx_v_self, PyObject *__pyx_arg_cov); /*proto*/
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_convert_vec_to_mat(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_cov, int __pyx_skip_dispatch) {
__Pyx_memviewslice __pyx_v_cov_mat = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_j;
Py_ssize_t __pyx_v_count;
Py_ssize_t __pyx_v_dim;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("convert_vec_to_mat", 0);
/* Check if called by wrapper */
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
static PY_UINT64_T tp_dict_version = 0, obj_dict_version = 0;
if (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict && tp_dict_version == __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) && (!Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset || obj_dict_version == __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))))));
else {
PY_UINT64_T type_dict_guard = (likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict)) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
#endif
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_convert_vec_to_mat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pyross_9inference_8SIR_type_83convert_vec_to_mat)) {
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_cov.memview)) { __Pyx_RaiseUnboundLocalError("cov"); __PYX_ERR(0, 1898, __pyx_L1_error) }
__pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_cov, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_1);
__pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
__pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
if (likely(__pyx_t_5)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_4, function);
}
}
__pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L0;
}
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
tp_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) ? __PYX_GET_DICT_VERSION(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dict) : 0;
obj_dict_version = likely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset) ? __PYX_GET_DICT_VERSION(_PyObject_GetDictPtr(((PyObject *)__pyx_v_self))) : 0;
if (unlikely(type_dict_guard != tp_dict_version)) {
tp_dict_version = obj_dict_version = 0;
}
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
}
#endif
}
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_AddTraceback("pyross.inference.SIR_type.convert_vec_to_mat", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_cov_mat, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_83convert_vec_to_mat(PyObject *__pyx_v_self, PyObject *__pyx_arg_cov); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_83convert_vec_to_mat(PyObject *__pyx_v_self, PyObject *__pyx_arg_cov) {
__Pyx_memviewslice __pyx_v_cov = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("convert_vec_to_mat (wrapper)", 0);
assert(__pyx_arg_cov); {
__pyx_v_cov = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_arg_cov, PyBUF_WRITABLE); if (unlikely(!__pyx_v_cov.memview)) __PYX_ERR(0, 1898, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.convert_vec_to_mat", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_82convert_vec_to_mat(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_cov);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_82convert_vec_to_mat(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_cov) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("convert_vec_to_mat", 0);
__Pyx_XDECREF(__pyx_r);
if (unlikely(!__pyx_v_cov.memview)) { __Pyx_RaiseUnboundLocalError("cov"); __PYX_ERR(0, 1898, __pyx_L1_error) }
__pyx_t_1 = __pyx_f_6pyross_9inference_8SIR_type_convert_vec_to_mat(__pyx_v_self, __pyx_v_cov, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1898, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR_type.convert_vec_to_mat", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_cov, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1899: cdef:
1900: double [:, :] cov_mat
+1901: Py_ssize_t i, j, count=0, dim=self.dim
__pyx_v_count = 0; __pyx_t_6 = __pyx_v_self->dim; __pyx_v_dim = __pyx_t_6;
+1902: cov_mat = np.empty((dim, dim), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 1902, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_cov_mat = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+1903: for i in range(dim):
__pyx_t_6 = __pyx_v_dim;
__pyx_t_8 = __pyx_t_6;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_i = __pyx_t_9;
+1904: cov_mat[i, i] = cov[count]
__pyx_t_10 = __pyx_v_count;
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = __pyx_v_i;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_cov_mat.data + __pyx_t_11 * __pyx_v_cov_mat.strides[0]) ) + __pyx_t_12 * __pyx_v_cov_mat.strides[1]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_cov.data + __pyx_t_10 * __pyx_v_cov.strides[0]) )));
+1905: count += 1
__pyx_v_count = (__pyx_v_count + 1);
+1906: for j in range(i+1, dim):
__pyx_t_13 = __pyx_v_dim;
__pyx_t_14 = __pyx_t_13;
for (__pyx_t_15 = (__pyx_v_i + 1); __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
__pyx_v_j = __pyx_t_15;
+1907: cov_mat[i, j] = cov[count]
__pyx_t_16 = __pyx_v_count;
__pyx_t_17 = __pyx_v_i;
__pyx_t_18 = __pyx_v_j;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_cov_mat.data + __pyx_t_17 * __pyx_v_cov_mat.strides[0]) ) + __pyx_t_18 * __pyx_v_cov_mat.strides[1]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_cov.data + __pyx_t_16 * __pyx_v_cov.strides[0]) )));
+1908: cov_mat[j, i] = cov[count]
__pyx_t_19 = __pyx_v_count;
__pyx_t_20 = __pyx_v_j;
__pyx_t_21 = __pyx_v_i;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_cov_mat.data + __pyx_t_20 * __pyx_v_cov_mat.strides[0]) ) + __pyx_t_21 * __pyx_v_cov_mat.strides[1]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_cov.data + __pyx_t_19 * __pyx_v_cov.strides[0]) )));
+1909: count += 1
__pyx_v_count = (__pyx_v_count + 1);
}
}
+1910: return cov_mat
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = __pyx_memoryview_fromslice(__pyx_v_cov_mat, 2, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1910, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1911:
+1912: cdef lyapunov_fun(self, double t, double [:] sig, spline):
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_lyapunov_fun(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, CYTHON_UNUSED double __pyx_v_t, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_sig, CYTHON_UNUSED PyObject *__pyx_v_spline) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lyapunov_fun", 0);
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1913: pass # to be implemented in subclasses
1914:
+1915: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t, contactMatrix,
static PyObject *__pyx_f_6pyross_9inference_8SIR_type_compute_jacobian_and_b_matrix(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_x, CYTHON_UNUSED double __pyx_v_t, CYTHON_UNUSED PyObject *__pyx_v_contactMatrix, struct __pyx_opt_args_6pyross_9inference_8SIR_type_compute_jacobian_and_b_matrix *__pyx_optional_args) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
}
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_8SIR_type_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
1916: b_matrix=True, jacobian=False):
1917: pass # to be implemented in subclass
1918:
1919:
+1920: def integrate(self, double [:] x0, double t1, double t2, Py_ssize_t steps, model, contactMatrix, method=None, maxNumSteps=100000):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_85integrate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_8SIR_type_84integrate[] = "An light weight integrate method similar to `simulate` in pyross.deterministic\n\n Parameters\n ----------\n x0: np.array\n Initial state of the given model\n t1: float\n Initial time of integrator\n t2: float\n Final time of integrator\n steps: int\n Number of time steps for numerical integrator evaluation.\n model: pyross model\n Model to integrate (pyross.deterministic.SIR etc)\n contactMatrix: python function(t)\n The social contact matrix C_{ij} denotes the\n average number of contacts made per day by an\n individual in class i with an individual in class j\n maxNumSteps:\n The maximum number of steps taken by the integrator.\n\n Returns\n -------\n sol: np.array\n The state of the system evaulated at the time point specified. Only used if det_method is set to 'solve_ivp'.\n ";
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_85integrate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_t1;
double __pyx_v_t2;
Py_ssize_t __pyx_v_steps;
PyObject *__pyx_v_model = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_method = 0;
PyObject *__pyx_v_maxNumSteps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("integrate (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_t1,&__pyx_n_s_t2,&__pyx_n_s_steps,&__pyx_n_s_model,&__pyx_n_s_contactMatrix,&__pyx_n_s_method,&__pyx_n_s_maxNumSteps,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)__pyx_int_100000);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 1); __PYX_ERR(0, 1920, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 2); __PYX_ERR(0, 1920, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 3); __PYX_ERR(0, 1920, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 4); __PYX_ERR(0, 1920, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 5); __PYX_ERR(0, 1920, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxNumSteps);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "integrate") < 0)) __PYX_ERR(0, 1920, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 1920, __pyx_L3_error)
__pyx_v_t1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_t1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1920, __pyx_L3_error)
__pyx_v_t2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1920, __pyx_L3_error)
__pyx_v_steps = __Pyx_PyIndex_AsSsize_t(values[3]); if (unlikely((__pyx_v_steps == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 1920, __pyx_L3_error)
__pyx_v_model = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_method = values[6];
__pyx_v_maxNumSteps = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1920, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_84integrate(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps, __pyx_v_model, __pyx_v_contactMatrix, __pyx_v_method, __pyx_v_maxNumSteps);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_84integrate(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_t1, double __pyx_v_t2, Py_ssize_t __pyx_v_steps, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_method, PyObject *__pyx_v_maxNumSteps) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_8_integrate *__pyx_cur_scope;
PyObject *__pyx_v_rhs0 = 0;
PyObject *__pyx_v_time_points = NULL;
PyObject *__pyx_v_sol = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("integrate", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_8_integrate *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_8_integrate(__pyx_ptype_6pyross_9inference___pyx_scope_struct_8_integrate, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_8_integrate *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 1920, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_model = __pyx_v_model;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_model);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_model);
__pyx_cur_scope->__pyx_v_contactMatrix = __pyx_v_contactMatrix;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_INCREF(__pyx_v_method);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.SIR_type.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_rhs0);
__Pyx_XDECREF(__pyx_v_time_points);
__Pyx_XDECREF(__pyx_v_sol);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XDECREF(__pyx_v_method);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_8_integrate {
PyObject_HEAD
PyObject *__pyx_v_contactMatrix;
PyObject *__pyx_v_model;
};
1921: """An light weight integrate method similar to `simulate` in pyross.deterministic
1922:
1923: Parameters
1924: ----------
1925: x0: np.array
1926: Initial state of the given model
1927: t1: float
1928: Initial time of integrator
1929: t2: float
1930: Final time of integrator
1931: steps: int
1932: Number of time steps for numerical integrator evaluation.
1933: model: pyross model
1934: Model to integrate (pyross.deterministic.SIR etc)
1935: contactMatrix: python function(t)
1936: The social contact matrix C_{ij} denotes the
1937: average number of contacts made per day by an
1938: individual in class i with an individual in class j
1939: maxNumSteps:
1940: The maximum number of steps taken by the integrator.
1941:
1942: Returns
1943: -------
1944: sol: np.array
1945: The state of the system evaulated at the time point specified. Only used if det_method is set to 'solve_ivp'.
1946: """
1947:
+1948: def rhs0(double t, double [:] xt):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_9integrate_1rhs0(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyMethodDef __pyx_mdef_6pyross_9inference_8SIR_type_9integrate_1rhs0 = {"rhs0", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_8SIR_type_9integrate_1rhs0, METH_VARARGS|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_9integrate_1rhs0(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
double __pyx_v_t;
__Pyx_memviewslice __pyx_v_xt = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs0 (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_xt,0};
PyObject* values[2] = {0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xt)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("rhs0", 1, 2, 2, 1); __PYX_ERR(0, 1948, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rhs0") < 0)) __PYX_ERR(0, 1948, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
}
__pyx_v_t = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 1948, __pyx_L3_error)
__pyx_v_xt = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_xt.memview)) __PYX_ERR(0, 1948, __pyx_L3_error)
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("rhs0", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1948, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type.integrate.rhs0", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_9integrate_rhs0(__pyx_self, __pyx_v_t, __pyx_v_xt);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_9integrate_rhs0(PyObject *__pyx_self, double __pyx_v_t, __Pyx_memviewslice __pyx_v_xt) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_8_integrate *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_8_integrate *__pyx_outer_scope;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("rhs0", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_8_integrate *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR_type.integrate.rhs0", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_xt, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__33 = PyTuple_Pack(2, __pyx_n_s_t, __pyx_n_s_xt); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 1948, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__33);
__Pyx_GIVEREF(__pyx_tuple__33);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_8SIR_type_9integrate_1rhs0, 0, __pyx_n_s_integrate_locals_rhs0, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1948, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_rhs0 = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_rhs0, 1948, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 1948, __pyx_L1_error)
+1949: model.set_contactMatrix(t, contactMatrix)
if (unlikely(!__pyx_cur_scope->__pyx_v_model)) { __Pyx_RaiseClosureNameError("model"); __PYX_ERR(0, 1949, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_model, __pyx_n_s_set_contactMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
if (unlikely(!__pyx_cur_scope->__pyx_v_contactMatrix)) { __Pyx_RaiseClosureNameError("contactMatrix"); __PYX_ERR(0, 1949, __pyx_L1_error) }
__pyx_t_4 = NULL;
__pyx_t_5 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_5 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1949, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_cur_scope->__pyx_v_contactMatrix};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1949, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
{
__pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_contactMatrix);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_contactMatrix);
PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_cur_scope->__pyx_v_contactMatrix);
__pyx_t_3 = 0;
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1949, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1950: model.rhs(xt, t)
if (unlikely(!__pyx_cur_scope->__pyx_v_model)) { __Pyx_RaiseClosureNameError("model"); __PYX_ERR(0, 1950, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_model, __pyx_n_s_rhs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1950, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_xt, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1950, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1950, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = NULL;
__pyx_t_5 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_4)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_5 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_3};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1950, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_3};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1950, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
#endif
{
__pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1950, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
if (__pyx_t_4) {
__Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
}
__Pyx_GIVEREF(__pyx_t_6);
PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_6);
__Pyx_GIVEREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, __pyx_t_3);
__pyx_t_6 = 0;
__pyx_t_3 = 0;
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1950, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+1951: return model.dxdt
__Pyx_XDECREF(__pyx_r); if (unlikely(!__pyx_cur_scope->__pyx_v_model)) { __Pyx_RaiseClosureNameError("model"); __PYX_ERR(0, 1951, __pyx_L1_error) } __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_model, __pyx_n_s_dxdt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1951, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
1952:
+1953: if method is None:
__pyx_t_2 = (__pyx_v_method == Py_None);
__pyx_t_3 = (__pyx_t_2 != 0);
if (__pyx_t_3) {
/* … */
}
+1954: method = self.det_method
__pyx_t_1 = __pyx_v_self->det_method;
__Pyx_INCREF(__pyx_t_1);
__Pyx_DECREF_SET(__pyx_v_method, __pyx_t_1);
__pyx_t_1 = 0;
+1955: if method=='LSODA':
__pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_method, __pyx_n_u_LSODA, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1955, __pyx_L1_error) if (__pyx_t_3) { /* … */ goto __pyx_L4; }
+1956: time_points = np.linspace(t1, t2, steps)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_linspace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_4, __pyx_t_6, __pyx_t_7}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1956, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_8, __pyx_t_4, __pyx_t_6, __pyx_t_7}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1956, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_10 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_7); __pyx_t_4 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_time_points = __pyx_t_1; __pyx_t_1 = 0;
+1957: sol = solve_ivp(rhs0, [t1,t2], np.multiply(x0, self.N), method='LSODA', t_eval=time_points, max_step=maxNumSteps, rtol=1e-4).y.T
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_10 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_5); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_10); PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_10); __pyx_t_5 = 0; __pyx_t_10 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_multiply); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_self->N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_5, __pyx_t_4}; __pyx_t_10 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_5, __pyx_t_4}; __pyx_t_10 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_11 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_9, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_9, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_rhs0); __Pyx_GIVEREF(__pyx_v_rhs0); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_rhs0); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_10); __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_method, __pyx_n_u_LSODA) < 0) __PYX_ERR(0, 1957, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_t_eval, __pyx_v_time_points) < 0) __PYX_ERR(0, 1957, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_max_step, __pyx_v_maxNumSteps) < 0) __PYX_ERR(0, 1957, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_10, __pyx_n_s_rtol, __pyx_float_1eneg_4) < 0) __PYX_ERR(0, 1957, __pyx_L1_error) __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_y); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_T); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1957, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_v_sol = __pyx_t_7; __pyx_t_7 = 0;
+1958: elif method=='RK45':
__pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_method, __pyx_n_u_RK45, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1958, __pyx_L1_error) if (__pyx_t_3) { /* … */ goto __pyx_L4; }
+1959: time_points = np.linspace(t1, t2, steps)
__Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_linspace); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_1 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_4 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_10, __pyx_t_1, __pyx_t_11}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1959, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_t_10, __pyx_t_1, __pyx_t_11}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 3+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1959, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_9, __pyx_t_11); __pyx_t_10 = 0; __pyx_t_1 = 0; __pyx_t_11 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_time_points = __pyx_t_7; __pyx_t_7 = 0;
+1960: sol = solve_ivp(rhs0, [t1,t2], np.multiply(x0, self.N), method='RK45', t_eval=time_points, max_step=maxNumSteps).y.T
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_11 = PyList_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_6); PyList_SET_ITEM(__pyx_t_11, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyList_SET_ITEM(__pyx_t_11, 1, __pyx_t_5); __pyx_t_6 = 0; __pyx_t_5 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_multiply); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyFloat_FromDouble(__pyx_v_self->N); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_4 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_10}; __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_6, __pyx_t_10}; __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_10); __pyx_t_6 = 0; __pyx_t_10 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_rhs0); __Pyx_GIVEREF(__pyx_v_rhs0); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_rhs0); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5); __pyx_t_11 = 0; __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_method, __pyx_n_u_RK45) < 0) __PYX_ERR(0, 1960, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_t_eval, __pyx_v_time_points) < 0) __PYX_ERR(0, 1960, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_max_step, __pyx_v_maxNumSteps) < 0) __PYX_ERR(0, 1960, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_T); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1960, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_sol = __pyx_t_11; __pyx_t_11 = 0;
+1961: elif method=='euler':
__pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_method, __pyx_n_u_euler, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1961, __pyx_L1_error) if (__pyx_t_3) { /* … */ goto __pyx_L4; }
+1962: sol = pyross.utils.forward_euler_integration(rhs0, np.multiply(x0, self.N), t1, t2, steps)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_forward_euler_integration); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_multiply); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_10 = PyFloat_FromDouble(__pyx_v_self->N); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_6 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_7, __pyx_t_10}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_t_7, __pyx_t_10}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_9, __pyx_t_10); __pyx_t_7 = 0; __pyx_t_10 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_7 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_v_rhs0, __pyx_t_1, __pyx_t_8, __pyx_t_4, __pyx_t_10}; __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_7, __pyx_v_rhs0, __pyx_t_1, __pyx_t_8, __pyx_t_4, __pyx_t_10}; __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_6 = PyTuple_New(5+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_v_rhs0); __Pyx_GIVEREF(__pyx_v_rhs0); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_v_rhs0); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_9, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_9, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 4+__pyx_t_9, __pyx_t_10); __pyx_t_1 = 0; __pyx_t_8 = 0; __pyx_t_4 = 0; __pyx_t_10 = 0; __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1962, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_sol = __pyx_t_11; __pyx_t_11 = 0;
+1963: elif method=='RK2':
__pyx_t_3 = (__Pyx_PyUnicode_Equals(__pyx_v_method, __pyx_n_u_RK2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1963, __pyx_L1_error) if (likely(__pyx_t_3)) { /* … */ goto __pyx_L4; }
+1964: sol = pyross.utils.RK2_integration(rhs0, np.multiply(x0, self.N), t1, t2, steps)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyross); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utils); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_RK2_integration); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_n_s_np); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_multiply); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_8 = PyFloat_FromDouble(__pyx_v_self->N); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_10, __pyx_t_8}; __pyx_t_6 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_1, __pyx_t_10, __pyx_t_8}; __pyx_t_6 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_1) { __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL; } __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_9, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_9, __pyx_t_8); __pyx_t_10 = 0; __pyx_t_8 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_10 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_10, __pyx_v_rhs0, __pyx_t_6, __pyx_t_4, __pyx_t_7, __pyx_t_8}; __pyx_t_11 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[6] = {__pyx_t_10, __pyx_v_rhs0, __pyx_t_6, __pyx_t_4, __pyx_t_7, __pyx_t_8}; __pyx_t_11 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 5+__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_1 = PyTuple_New(5+__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_rhs0); __Pyx_GIVEREF(__pyx_v_rhs0); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_9, __pyx_v_rhs0); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_9, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_9, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_9, __pyx_t_8); __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_sol = __pyx_t_11; __pyx_t_11 = 0;
1965: else:
+1966: print(method)
/*else*/ {
__pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_v_method); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1966, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+1967: raise Exception("Error: method not found. use set_det_method to reset, or pass in a valid method")
__pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_Raise(__pyx_t_11, 0, 0, 0); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __PYX_ERR(0, 1967, __pyx_L1_error) } __pyx_L4:; /* … */ __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_u_Error_method_not_found_use_set_d); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 1967, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__35); __Pyx_GIVEREF(__pyx_tuple__35);
+1968: return sol/self.N
__Pyx_XDECREF(__pyx_r); __pyx_t_11 = PyFloat_FromDouble(__pyx_v_self->N); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_v_sol, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1968, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_r = __pyx_t_5; __pyx_t_5 = 0; goto __pyx_L0;
1969:
+1970: def _flatten_parameters(self, guess, stds, bounds, infer_scale_parameter):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_87_flatten_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_87_flatten_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_guess = 0;
PyObject *__pyx_v_stds = 0;
PyObject *__pyx_v_bounds = 0;
PyObject *__pyx_v_infer_scale_parameter = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_flatten_parameters (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_guess,&__pyx_n_s_stds,&__pyx_n_s_bounds,&__pyx_n_s_infer_scale_parameter,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_guess)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_stds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_flatten_parameters", 1, 4, 4, 1); __PYX_ERR(0, 1970, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_bounds)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_flatten_parameters", 1, 4, 4, 2); __PYX_ERR(0, 1970, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_infer_scale_parameter)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_flatten_parameters", 1, 4, 4, 3); __PYX_ERR(0, 1970, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_flatten_parameters") < 0)) __PYX_ERR(0, 1970, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
}
__pyx_v_guess = values[0];
__pyx_v_stds = values[1];
__pyx_v_bounds = values[2];
__pyx_v_infer_scale_parameter = values[3];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_flatten_parameters", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1970, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._flatten_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_86_flatten_parameters(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_guess, __pyx_v_stds, __pyx_v_bounds, __pyx_v_infer_scale_parameter);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_86_flatten_parameters(struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_guess, PyObject *__pyx_v_stds, PyObject *__pyx_v_bounds, PyObject *__pyx_v_infer_scale_parameter) {
PyObject *__pyx_v_age_dependent = NULL;
PyObject *__pyx_v_n_age_dep = NULL;
PyObject *__pyx_v_is_scale_parameter = NULL;
PyObject *__pyx_v_k = NULL;
PyObject *__pyx_v_j = NULL;
PyObject *__pyx_v_n_scaled_age_dep = NULL;
PyObject *__pyx_v_flat_guess_size = NULL;
PyObject *__pyx_v_flat_guess = NULL;
PyObject *__pyx_v_flat_stds = NULL;
PyObject *__pyx_v_flat_bounds = NULL;
PyObject *__pyx_v_flat_guess_range = NULL;
PyObject *__pyx_v_scaled_guesses = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_8genexpr4__pyx_v_g = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_flatten_parameters", 0);
__Pyx_INCREF(__pyx_v_infer_scale_parameter);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("pyross.inference.SIR_type._flatten_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_age_dependent);
__Pyx_XDECREF(__pyx_v_n_age_dep);
__Pyx_XDECREF(__pyx_v_is_scale_parameter);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XDECREF(__pyx_v_j);
__Pyx_XDECREF(__pyx_v_n_scaled_age_dep);
__Pyx_XDECREF(__pyx_v_flat_guess_size);
__Pyx_XDECREF(__pyx_v_flat_guess);
__Pyx_XDECREF(__pyx_v_flat_stds);
__Pyx_XDECREF(__pyx_v_flat_bounds);
__Pyx_XDECREF(__pyx_v_flat_guess_range);
__Pyx_XDECREF(__pyx_v_scaled_guesses);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_8genexpr4__pyx_v_g);
__Pyx_XDECREF(__pyx_v_infer_scale_parameter);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
1971: # Deal with age-dependent rates: Transfer the supplied guess to a flat guess where the age dependent rates are either listed
1972: # as multiple parameters (infer_scale_parameter is False) or replaced by a scaling factor with initial value 1.0
1973: # (infer_scale_parameter is True).
+1974: age_dependent = np.array([hasattr(g, "__len__") for g in guess], dtype=np.bool) # Select all guesses with more than 1 entry
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; { /* enter inner scope */ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1974, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_v_guess)) || PyTuple_CheckExact(__pyx_v_guess)) { __pyx_t_3 = __pyx_v_guess; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_guess); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1974, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1974, __pyx_L5_error) } for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1974, __pyx_L5_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1974, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_6); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1974, __pyx_L5_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1974, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_6); #endif } } else { __pyx_t_6 = __pyx_t_5(__pyx_t_3); if (unlikely(!__pyx_t_6)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1974, __pyx_L5_error) } break; } __Pyx_GOTREF(__pyx_t_6); } __Pyx_XDECREF_SET(__pyx_8genexpr4__pyx_v_g, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = __Pyx_HasAttr(__pyx_8genexpr4__pyx_v_g, __pyx_n_u_len); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1974, __pyx_L5_error) __pyx_t_6 = __Pyx_PyBool_FromLong(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1974, __pyx_L5_error) __Pyx_GOTREF(__pyx_t_6); if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(0, 1974, __pyx_L5_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_g); __pyx_8genexpr4__pyx_v_g = 0; goto __pyx_L8_exit_scope; __pyx_L5_error:; __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_g); __pyx_8genexpr4__pyx_v_g = 0; goto __pyx_L1_error; __pyx_L8_exit_scope:; } /* exit inner scope */ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_bool); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1974, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_age_dependent = __pyx_t_8; __pyx_t_8 = 0;
+1975: n_age_dep = np.sum(age_dependent)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_8 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_v_age_dependent) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_age_dependent); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1975, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_n_age_dep = __pyx_t_8; __pyx_t_8 = 0;
+1976: if not hasattr(infer_scale_parameter, "__len__"):
__pyx_t_7 = __Pyx_HasAttr(__pyx_v_infer_scale_parameter, __pyx_n_u_len); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 1976, __pyx_L1_error) __pyx_t_9 = ((!(__pyx_t_7 != 0)) != 0); if (__pyx_t_9) { /* … */ }
1977: # infer_scale_parameter can be either set for all age-dependent parameters or individually
+1978: infer_scale_parameter = np.array([infer_scale_parameter]*n_age_dep, dtype=np.bool)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_infer_scale_parameter); __Pyx_GIVEREF(__pyx_v_infer_scale_parameter); PyList_SET_ITEM(__pyx_t_8, 0, __pyx_v_infer_scale_parameter); { PyObject* __pyx_temp = PyNumber_InPlaceMultiply(__pyx_t_8, __pyx_v_n_age_dep); if (unlikely(!__pyx_temp)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_temp); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = __pyx_temp; } __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_bool); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1978, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_infer_scale_parameter, __pyx_t_6); __pyx_t_6 = 0;
+1979: is_scale_parameter = np.zeros(len(guess), dtype=np.bool)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_4 = PyObject_Length(__pyx_v_guess); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1979, __pyx_L1_error) __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_bool); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1979, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_is_scale_parameter = __pyx_t_2; __pyx_t_2 = 0;
+1980: k = 0
__Pyx_INCREF(__pyx_int_0);
__pyx_v_k = __pyx_int_0;
+1981: for j in range(len(guess)):
__pyx_t_4 = PyObject_Length(__pyx_v_guess); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1981, __pyx_L1_error) __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) { __pyx_t_2 = __pyx_t_6; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0; __pyx_t_5 = NULL; } else { __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1981, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; for (;;) { if (likely(!__pyx_t_5)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1981, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif } else { if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1981, __pyx_L1_error) #else __pyx_t_6 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1981, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); #endif } } else { __pyx_t_6 = __pyx_t_5(__pyx_t_2); if (unlikely(!__pyx_t_6)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 1981, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_6); } __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_6); __pyx_t_6 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+1982: if age_dependent[j]:
__pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_age_dependent, __pyx_v_j); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1982, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_9) { /* … */ }
+1983: is_scale_parameter[j] = infer_scale_parameter[k]
__pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_infer_scale_parameter, __pyx_v_k); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1983, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (unlikely(PyObject_SetItem(__pyx_v_is_scale_parameter, __pyx_v_j, __pyx_t_6) < 0)) __PYX_ERR(0, 1983, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+1984: k += 1
__pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_k, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1984, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_6); __pyx_t_6 = 0;
1985:
+1986: n_scaled_age_dep = np.sum(infer_scale_parameter)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_sum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_infer_scale_parameter) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_infer_scale_parameter); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1986, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_n_scaled_age_dep = __pyx_t_2; __pyx_t_2 = 0;
+1987: flat_guess_size = len(guess) - n_age_dep + self.M * (n_age_dep - n_scaled_age_dep) + n_scaled_age_dep
__pyx_t_4 = PyObject_Length(__pyx_v_guess); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1987, __pyx_L1_error) __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_v_n_age_dep); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = PyNumber_Subtract(__pyx_v_n_age_dep, __pyx_v_n_scaled_age_dep); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = PyNumber_Multiply(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyNumber_Add(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_Add(__pyx_t_6, __pyx_v_n_scaled_age_dep); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1987, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_flat_guess_size = __pyx_t_8; __pyx_t_8 = 0;
1988:
1989: # Define a new flat guess and a list of slices that correspond to the intitial guess
+1990: flat_guess = np.zeros(flat_guess_size)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_8 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_6, __pyx_v_flat_guess_size) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_flat_guess_size); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1990, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_flat_guess = __pyx_t_8; __pyx_t_8 = 0;
+1991: flat_stds = np.zeros(flat_guess_size)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_8 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_1, __pyx_v_flat_guess_size) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_flat_guess_size); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1991, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_flat_stds = __pyx_t_8; __pyx_t_8 = 0;
+1992: flat_bounds = np.zeros((flat_guess_size, 2))
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_flat_guess_size); __Pyx_GIVEREF(__pyx_v_flat_guess_size); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_flat_guess_size); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_int_2); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_8 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1992, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_flat_bounds = __pyx_t_8; __pyx_t_8 = 0;
+1993: flat_guess_range = [] # Indicates the position(s) in flat_guess that each parameter corresponds to
__pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1993, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_v_flat_guess_range = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0;
+1994: scaled_guesses = [] # Store the age-dependent guesses where we infer a scale parameter in this list
__pyx_t_8 = PyList_New(0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1994, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_v_scaled_guesses = ((PyObject*)__pyx_t_8); __pyx_t_8 = 0;
+1995: i = 0; j = 0
__Pyx_INCREF(__pyx_int_0); __pyx_v_i = __pyx_int_0; __Pyx_INCREF(__pyx_int_0); __Pyx_XDECREF_SET(__pyx_v_j, __pyx_int_0);
+1996: while i < flat_guess_size:
while (1) {
__pyx_t_8 = PyObject_RichCompare(__pyx_v_i, __pyx_v_flat_guess_size, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1996, __pyx_L1_error)
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1996, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (!__pyx_t_9) break;
+1997: if age_dependent[j] and is_scale_parameter[j]:
__pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_age_dependent, __pyx_v_j); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1997, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (__pyx_t_7) { } else { __pyx_t_9 = __pyx_t_7; goto __pyx_L16_bool_binop_done; } __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_is_scale_parameter, __pyx_v_j); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1997, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 1997, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_9 = __pyx_t_7; __pyx_L16_bool_binop_done:; if (__pyx_t_9) { /* … */ goto __pyx_L15; }
+1998: flat_guess[i] = 1.0 # Initial guess for the scaling parameter
if (unlikely(PyObject_SetItem(__pyx_v_flat_guess, __pyx_v_i, __pyx_float_1_0) < 0)) __PYX_ERR(0, 1998, __pyx_L1_error)
+1999: flat_stds[i] = stds[j] # Assume that suitable std. deviation for scaling factor and bounds are
__pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_stds, __pyx_v_j); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1999, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (unlikely(PyObject_SetItem(__pyx_v_flat_stds, __pyx_v_i, __pyx_t_8) < 0)) __PYX_ERR(0, 1999, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2000: flat_bounds[i,:] = bounds[j,:] # provided by the user (only one bound for age-dependent parameters possible).
__pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_j); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_slice__2); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2000, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_i); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_slice__2); if (unlikely(PyObject_SetItem(__pyx_v_flat_bounds, __pyx_t_8, __pyx_t_1) < 0)) __PYX_ERR(0, 2000, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2001: scaled_guesses.append(guess[j])
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_guess, __pyx_v_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2001, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_scaled_guesses, __pyx_t_1); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2001, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2002: flat_guess_range.append(i)
__pyx_t_10 = __Pyx_PyList_Append(__pyx_v_flat_guess_range, __pyx_v_i); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2002, __pyx_L1_error)
+2003: i += 1
__pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2003, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_1 = 0;
+2004: elif age_dependent[j]:
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_age_dependent, __pyx_v_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2004, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 2004, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_9) { /* … */ goto __pyx_L15; }
+2005: flat_guess[i:i+self.M] = guess[j]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_guess, __pyx_v_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyNumber_Add(__pyx_v_i, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2005, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (__Pyx_PyObject_SetSlice(__pyx_v_flat_guess, __pyx_t_1, 0, 0, &__pyx_v_i, &__pyx_t_6, NULL, 0, 0, 0) < 0) __PYX_ERR(0, 2005, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2006: flat_stds[i:i+self.M] = stds[j]
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_stds, __pyx_v_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2006, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2006, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = PyNumber_Add(__pyx_v_i, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2006, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__Pyx_PyObject_SetSlice(__pyx_v_flat_stds, __pyx_t_1, 0, 0, &__pyx_v_i, &__pyx_t_8, NULL, 0, 0, 0) < 0) __PYX_ERR(0, 2006, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2007: flat_bounds[i:i+self.M,:] = bounds[j,:]
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_j); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_slice__2); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyNumber_Add(__pyx_v_i, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PySlice_New(__pyx_v_i, __pyx_t_6, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__2); __pyx_t_1 = 0; if (unlikely(PyObject_SetItem(__pyx_v_flat_bounds, __pyx_t_6, __pyx_t_8) < 0)) __PYX_ERR(0, 2007, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2008: flat_guess_range.append(list(range(i, i+self.M)))
__pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyNumber_Add(__pyx_v_i, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_i); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PySequence_List(__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_flat_guess_range, __pyx_t_8); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2008, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2009: i += self.M
__pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2009, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF_SET(__pyx_v_i, __pyx_t_6); __pyx_t_6 = 0;
2010: else:
+2011: flat_guess[i] = guess[j]
/*else*/ {
__pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_guess, __pyx_v_j); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2011, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_6);
if (unlikely(PyObject_SetItem(__pyx_v_flat_guess, __pyx_v_i, __pyx_t_6) < 0)) __PYX_ERR(0, 2011, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2012: flat_stds[i] = stds[j]
__pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_stds, __pyx_v_j); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (unlikely(PyObject_SetItem(__pyx_v_flat_stds, __pyx_v_i, __pyx_t_6) < 0)) __PYX_ERR(0, 2012, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+2013: flat_bounds[i,:] = bounds[j,:]
__pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_j); __Pyx_GIVEREF(__pyx_v_j); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_j); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__2); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_bounds, __pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_i); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__2); if (unlikely(PyObject_SetItem(__pyx_v_flat_bounds, __pyx_t_6, __pyx_t_8) < 0)) __PYX_ERR(0, 2013, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+2014: flat_guess_range.append(i)
__pyx_t_10 = __Pyx_PyList_Append(__pyx_v_flat_guess_range, __pyx_v_i); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2014, __pyx_L1_error)
+2015: i += 1
__pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2015, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF_SET(__pyx_v_i, __pyx_t_8); __pyx_t_8 = 0; } __pyx_L15:;
+2016: j += 1
__pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_v_j, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF_SET(__pyx_v_j, __pyx_t_8); __pyx_t_8 = 0; }
2017:
+2018: return flat_guess, flat_stds, flat_bounds, flat_guess_range, is_scale_parameter, scaled_guesses
__Pyx_XDECREF(__pyx_r); __pyx_t_8 = PyTuple_New(6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2018, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_flat_guess); __Pyx_GIVEREF(__pyx_v_flat_guess); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_flat_guess); __Pyx_INCREF(__pyx_v_flat_stds); __Pyx_GIVEREF(__pyx_v_flat_stds); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_flat_stds); __Pyx_INCREF(__pyx_v_flat_bounds); __Pyx_GIVEREF(__pyx_v_flat_bounds); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_flat_bounds); __Pyx_INCREF(__pyx_v_flat_guess_range); __Pyx_GIVEREF(__pyx_v_flat_guess_range); PyTuple_SET_ITEM(__pyx_t_8, 3, __pyx_v_flat_guess_range); __Pyx_INCREF(__pyx_v_is_scale_parameter); __Pyx_GIVEREF(__pyx_v_is_scale_parameter); PyTuple_SET_ITEM(__pyx_t_8, 4, __pyx_v_is_scale_parameter); __Pyx_INCREF(__pyx_v_scaled_guesses); __Pyx_GIVEREF(__pyx_v_scaled_guesses); PyTuple_SET_ITEM(__pyx_t_8, 5, __pyx_v_scaled_guesses); __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0;
2019:
+2020: def _unflatten_parameters(self, params, flat_guess_range, is_scale_parameter, scaled_guesses):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_89_unflatten_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_8SIR_type_89_unflatten_parameters(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
PyObject *__pyx_v_flat_guess_range = 0;
PyObject *__pyx_v_is_scale_parameter = 0;
PyObject *__pyx_v_scaled_guesses = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_unflatten_parameters (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,&__pyx_n_s_flat_guess_range,&__pyx_n_s_is_scale_parameter,&__pyx_n_s_scaled_guesses,0};
PyObject* values[4] = {0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_flat_guess_range)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_unflatten_parameters", 1, 4, 4, 1); __PYX_ERR(0, 2020, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_is_scale_parameter)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_unflatten_parameters", 1, 4, 4, 2); __PYX_ERR(0, 2020, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_scaled_guesses)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("_unflatten_parameters", 1, 4, 4, 3); __PYX_ERR(0, 2020, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_unflatten_parameters") < 0)) __PYX_ERR(0, 2020, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
}
__pyx_v_params = values[0];
__pyx_v_flat_guess_range = values[1];
__pyx_v_is_scale_parameter = values[2];
__pyx_v_scaled_guesses = values[3];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("_unflatten_parameters", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2020, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR_type._unflatten_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_8SIR_type_88_unflatten_parameters(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_params, __pyx_v_flat_guess_range, __pyx_v_is_scale_parameter, __pyx_v_scaled_guesses);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_8SIR_type_88_unflatten_parameters(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR_type *__pyx_v_self, PyObject *__pyx_v_params, PyObject *__pyx_v_flat_guess_range, PyObject *__pyx_v_is_scale_parameter, PyObject *__pyx_v_scaled_guesses) {
PyObject *__pyx_v_orig_params = NULL;
PyObject *__pyx_v_k = NULL;
Py_ssize_t __pyx_v_j;
PyObject *__pyx_8genexpr5__pyx_v_val = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_unflatten_parameters", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.SIR_type._unflatten_parameters", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_orig_params);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XDECREF(__pyx_8genexpr5__pyx_v_val);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2021: # Restore parameters from flattened parameters
+2022: orig_params = []
__pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2022, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_orig_params = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2023: k=0
__Pyx_INCREF(__pyx_int_0);
__pyx_v_k = __pyx_int_0;
+2024: for j in range(len(flat_guess_range)):
__pyx_t_2 = PyObject_Length(__pyx_v_flat_guess_range); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2024, __pyx_L1_error) __pyx_t_3 = __pyx_t_2; for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) { __pyx_v_j = __pyx_t_4;
+2025: if is_scale_parameter[j]:
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_is_scale_parameter, __pyx_v_j, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2025, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2025, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_5) { /* … */ goto __pyx_L5; }
+2026: orig_params.append(np.array([params[flat_guess_range[j]]*val for val in scaled_guesses[k]]))
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; { /* enter inner scope */ __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2026, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_scaled_guesses, __pyx_v_k); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2026, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_8); if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) { __pyx_t_9 = __pyx_t_8; __Pyx_INCREF(__pyx_t_9); __pyx_t_10 = 0; __pyx_t_11 = NULL; } else { __pyx_t_10 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2026, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_11 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2026, __pyx_L8_error) } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; for (;;) { if (likely(!__pyx_t_11)) { if (likely(PyList_CheckExact(__pyx_t_9))) { if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_9)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_10); __Pyx_INCREF(__pyx_t_8); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2026, __pyx_L8_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_9, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2026, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_8); #endif } else { if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_9)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_10); __Pyx_INCREF(__pyx_t_8); __pyx_t_10++; if (unlikely(0 < 0)) __PYX_ERR(0, 2026, __pyx_L8_error) #else __pyx_t_8 = PySequence_ITEM(__pyx_t_9, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2026, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_8); #endif } } else { __pyx_t_8 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_8)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2026, __pyx_L8_error) } break; } __Pyx_GOTREF(__pyx_t_8); } __Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_val, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_flat_guess_range, __pyx_v_j, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2026, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_params, __pyx_t_8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2026, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_Multiply(__pyx_t_12, __pyx_8genexpr5__pyx_v_val); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2026, __pyx_L8_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(__Pyx_ListComp_Append(__pyx_t_6, (PyObject*)__pyx_t_8))) __PYX_ERR(0, 2026, __pyx_L8_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_val); __pyx_8genexpr5__pyx_v_val = 0; goto __pyx_L11_exit_scope; __pyx_L8_error:; __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_val); __pyx_8genexpr5__pyx_v_val = 0; goto __pyx_L1_error; __pyx_L11_exit_scope:; } /* exit inner scope */ __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_1 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2026, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_13 = __Pyx_PyList_Append(__pyx_v_orig_params, __pyx_t_1); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 2026, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2027: k += 1
__pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_k, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2027, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF_SET(__pyx_v_k, __pyx_t_1); __pyx_t_1 = 0;
2028: else:
+2029: orig_params.append(params[flat_guess_range[j]])
/*else*/ {
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_flat_guess_range, __pyx_v_j, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2029, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_params, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2029, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_13 = __Pyx_PyList_Append(__pyx_v_orig_params, __pyx_t_7); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 2029, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
}
__pyx_L5:;
}
2030:
+2031: return orig_params
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_orig_params); __pyx_r = __pyx_v_orig_params; goto __pyx_L0;
2032:
2033:
2034: @cython.wraparound(False)
2035: @cython.boundscheck(False)
2036: @cython.cdivision(True)
2037: @cython.nonecheck(False)
+2038: cdef class SIR(SIR_type):
struct __pyx_obj_6pyross_9inference_SIR {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SIR {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SIR *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SIR *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SIR *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_SIR *__pyx_vtabptr_6pyross_9inference_SIR;
2039: """
2040: Susceptible, Infected, Removed (SIR)
2041:
2042: * Ia: asymptomatic
2043: * Is: symptomatic
2044:
2045: To initialise the SIR class,
2046:
2047: Parameters
2048: ----------
2049: parameters: dict
2050: Contains the following keys:
2051:
2052: alpha: float
2053: Ratio of asymptomatic carriers
2054: beta: float
2055: Infection rate upon contact
2056: gIa: float
2057: Recovery rate for asymptomatic
2058: gIs: float
2059: Recovery rate for symptomatic
2060: fsa: float
2061: The fraction of symptomatic people who are self-isolating
2062: M: int
2063: Number of age groups
2064: fi: float numpy.array
2065: Fraction of each age group
2066: N: int
2067: Total population
2068: steps: int
2069: The number of internal integration steps performed between the observed points (not used in tangent space inference).
2070: The minimal is 4, as required by the cubic spline fit used for interpolation.
2071: For robustness, set steps to be large, det_method='LSODA', lyapunov_method='LSODA'.
2072: For speed, set steps to be 4, det_method='RK2', lyapunov_method='euler'.
2073: For a combination of the two, choose something in between.
2074: det_method: str, optional
2075: The integration method used for deterministic integration.
2076: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2077: lyapunov_method: str, optional
2078: The integration method used for the integration of the Lyapunov equation for the covariance.
2079: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2080: """
2081:
+2082: def __init__(self, parameters, M, fi, N, steps, det_method='LSODA', lyapunov_method='LSODA'):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_3SIR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_3SIR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_N = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_N,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
values[5] = ((PyObject *)__pyx_n_u_LSODA);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 1); __PYX_ERR(0, 2082, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 2); __PYX_ERR(0, 2082, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 3); __PYX_ERR(0, 2082, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 4); __PYX_ERR(0, 2082, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[6] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2082, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_M = values[1];
__pyx_v_fi = values[2];
__pyx_v_N = values[3];
__pyx_v_steps = values[4];
__pyx_v_det_method = values[5];
__pyx_v_lyapunov_method = values[6];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2082, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3SIR___init__(((struct __pyx_obj_6pyross_9inference_SIR *)__pyx_v_self), __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_3SIR___init__(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_N, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SIR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2083: super().__init__(parameters, 3, M, fi, N, steps, det_method, lyapunov_method)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SIR)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SIR)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SIR)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_3, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2083, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_3, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2083, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(8+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_3); __Pyx_GIVEREF(__pyx_int_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_3); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_N); __Pyx_GIVEREF(__pyx_v_N); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_N); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_lyapunov_method); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2083, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2084: self.class_index_dict = {'S':0, 'Ia':1, 'Is':2}
__pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2084, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_S, __pyx_int_0) < 0) __PYX_ERR(0, 2084, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ia, __pyx_int_1) < 0) __PYX_ERR(0, 2084, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Is, __pyx_int_2) < 0) __PYX_ERR(0, 2084, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2085:
+2086: def make_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3SIR_3make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3SIR_3make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3SIR_2make_det_model(((struct __pyx_obj_6pyross_9inference_SIR *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3SIR_2make_det_model(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SIR.make_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2087: return pyross.deterministic.SIR(parameters, self.M, self.fi*self.N)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.N); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SIR), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2087, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
2088:
+2089: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3SIR_5infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3SIR_5infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3SIR_4infection_indices(((struct __pyx_obj_6pyross_9inference_SIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3SIR_4infection_indices(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SIR.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2090: return [1, 2]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_1); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_2); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
2091:
+2092: def make_params_dict(self, params=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3SIR_7make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3SIR_7make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,0};
PyObject* values[1] = {0};
values[0] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params);
if (value) { values[0] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "make_params_dict") < 0)) __PYX_ERR(0, 2092, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("make_params_dict", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2092, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SIR.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3SIR_6make_params_dict(((struct __pyx_obj_6pyross_9inference_SIR *)__pyx_v_self), __pyx_v_params);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3SIR_6make_params_dict(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, PyObject *__pyx_v_params) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SIR.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2093: if params is None:
__pyx_t_1 = (__pyx_v_params == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+2094: parameters = {'alpha':self.alpha, 'beta':self.beta, 'gIa':self.gIa, 'gIs':self.gIs, 'fsa':self.fsa}
__pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_alpha, ((PyObject *)__pyx_v_self->__pyx_base.alpha)) < 0) __PYX_ERR(0, 2094, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_beta, ((PyObject *)__pyx_v_self->__pyx_base.beta)) < 0) __PYX_ERR(0, 2094, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIa, ((PyObject *)__pyx_v_self->__pyx_base.gIa)) < 0) __PYX_ERR(0, 2094, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIs, ((PyObject *)__pyx_v_self->__pyx_base.gIs)) < 0) __PYX_ERR(0, 2094, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 2094, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
2095: else:
+2096: parameters = {'alpha':params[0], 'beta':params[1], 'gIa':params[2], 'gIs':params[3], 'fsa':self.fsa}
/*else*/ {
__pyx_t_3 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2096, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2096, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_alpha, __pyx_t_4) < 0) __PYX_ERR(0, 2096, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2096, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_beta, __pyx_t_4) < 0) __PYX_ERR(0, 2096, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2096, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIa, __pyx_t_4) < 0) __PYX_ERR(0, 2096, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2096, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIs, __pyx_t_4) < 0) __PYX_ERR(0, 2096, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 2096, __pyx_L1_error)
__pyx_v_parameters = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
}
__pyx_L3:;
+2097: return parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_parameters); __pyx_r = __pyx_v_parameters; goto __pyx_L0;
2098:
+2099: cdef lyapunov_fun(self, double t, double [:] sig, spline):
static PyObject *__pyx_f_6pyross_9inference_3SIR_lyapunov_fun(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, double __pyx_v_t, __Pyx_memviewslice __pyx_v_sig, PyObject *__pyx_v_spline) {
__Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lyapunov_fun", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("pyross.inference.SIR.lyapunov_fun", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2100: cdef:
2101: double [:] x, s, Ia, Is
+2102: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2103: x = spline(t)
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_spline); __pyx_t_4 = __pyx_v_spline; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2103, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_x = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2104: s = x[0:M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2104, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2105: Ia = x[M:2*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2105, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2106: Is = x[2*M:3*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2106, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2107: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_l = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2108: self.fill_lambdas(Ia, Is, l)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2108, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2109: self.jacobian(s, l)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2110: self.noise_correlation(s, Ia, Is, l)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2111: self.compute_dsigdt(sig)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.compute_dsigdt(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sig); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2111, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2112:
+2113: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t, contactMatrix,
static PyObject *__pyx_f_6pyross_9inference_3SIR_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, PyObject *__pyx_v_contactMatrix, struct __pyx_opt_args_6pyross_9inference_3SIR_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SIR.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_3SIR_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+2114: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
2115: cdef:
2116: double [:] s, Ia, Is
+2117: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2118: s = x[0:M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2118, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2119: Ia = x[M:2*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2119, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2120: Is = x[2*M:3*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2120, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2121: self.CM = contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2121, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_contactMatrix); __pyx_t_6 = __pyx_v_contactMatrix; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2121, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2121, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+2122: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2122, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2123: self.fill_lambdas(Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2124: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2124, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2125: self.noise_correlation(s, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2126: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2126, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2127: self.jacobian(s, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
2128:
2129:
2130:
+2131: cdef fill_lambdas(self, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_3SIR_fill_lambdas(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_AddTraceback("pyross.inference.SIR.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2132: cdef:
+2133: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 2133, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+2134: double [:] fsa=self.fsa, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2134, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2134, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2135: double [:] fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2135, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2136: Py_ssize_t m, n, M=self.M
__pyx_t_3 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_3;
+2137: for m in range(M):
__pyx_t_3 = __pyx_v_M;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_m = __pyx_t_5;
+2138: for n in range(M):
__pyx_t_6 = __pyx_v_M;
__pyx_t_7 = __pyx_t_6;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_n = __pyx_t_8;
+2139: l[m] += beta[m]*CM[m,n]*(Ia[n]+fsa[n]*Is[n])/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_16 * __pyx_v_l.strides[0]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * ((*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) ))) + ((*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_13 * __pyx_v_fsa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_14 * __pyx_v_Is.strides[0]) )))))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_15 * __pyx_v_fi.strides[0]) ))));
}
}
2140:
+2141: cdef jacobian(self, double [:] s, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_3SIR_jacobian(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_99);
__Pyx_XDECREF(__pyx_t_100);
__Pyx_XDECREF(__pyx_t_101);
__Pyx_XDECREF(__pyx_t_102);
__Pyx_AddTraceback("pyross.inference.SIR.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2142: cdef:
+2143: Py_ssize_t m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+2144: double [:] gIa=self.gIa, gIs=self.gIs, fsa=self.fsa, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2144, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2144, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2144, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2144, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2145: double [:] alpha=self.alpha, balpha=1-self.alpha, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2145, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2145, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2145, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2145, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2146: double [:, :, :, :] J = self.J
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 2146, __pyx_L1_error) __pyx_v_J = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+2147: double [:, :] CM=self.CM
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2147, __pyx_L1_error) __pyx_v_CM = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+2148: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_6 = __pyx_t_1;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_m = __pyx_t_7;
+2149: J[0, m, 0, m] = -l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) ))));
+2150: J[1, m, 0, m] = alpha[m]*l[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = 1;
__pyx_t_16 = __pyx_v_m;
__pyx_t_17 = 0;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_15 * __pyx_v_J.strides[0]) ) + __pyx_t_16 * __pyx_v_J.strides[1]) ) + __pyx_t_17 * __pyx_v_J.strides[2]) ) + __pyx_t_18 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_13 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_14 * __pyx_v_l.strides[0]) ))));
+2151: J[2, m, 0, m] = balpha[m]*l[m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = 2;
__pyx_t_22 = __pyx_v_m;
__pyx_t_23 = 0;
__pyx_t_24 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_21 * __pyx_v_J.strides[0]) ) + __pyx_t_22 * __pyx_v_J.strides[1]) ) + __pyx_t_23 * __pyx_v_J.strides[2]) ) + __pyx_t_24 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_19 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_20 * __pyx_v_l.strides[0]) ))));
+2152: for n in range(M):
__pyx_t_25 = __pyx_v_M;
__pyx_t_26 = __pyx_t_25;
for (__pyx_t_27 = 0; __pyx_t_27 < __pyx_t_26; __pyx_t_27+=1) {
__pyx_v_n = __pyx_t_27;
+2153: J[0, m, 1, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_28 = __pyx_v_m;
__pyx_t_29 = __pyx_v_m;
__pyx_t_30 = __pyx_v_m;
__pyx_t_31 = __pyx_v_n;
__pyx_t_32 = __pyx_v_n;
__pyx_t_33 = 0;
__pyx_t_34 = __pyx_v_m;
__pyx_t_35 = 1;
__pyx_t_36 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_33 * __pyx_v_J.strides[0]) ) + __pyx_t_34 * __pyx_v_J.strides[1]) ) + __pyx_t_35 * __pyx_v_J.strides[2]) ) + __pyx_t_36 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_28 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_29 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_30 * __pyx_v_CM.strides[0]) ) + __pyx_t_31 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_32 * __pyx_v_fi.strides[0]) ))));
+2154: J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_37 = __pyx_v_m;
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = __pyx_v_m;
__pyx_t_40 = __pyx_v_n;
__pyx_t_41 = __pyx_v_n;
__pyx_t_42 = __pyx_v_n;
__pyx_t_43 = 0;
__pyx_t_44 = __pyx_v_m;
__pyx_t_45 = 2;
__pyx_t_46 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_43 * __pyx_v_J.strides[0]) ) + __pyx_t_44 * __pyx_v_J.strides[1]) ) + __pyx_t_45 * __pyx_v_J.strides[2]) ) + __pyx_t_46 * __pyx_v_J.strides[3]) )) = (((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_37 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_38 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_39 * __pyx_v_CM.strides[0]) ) + __pyx_t_40 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_41 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_42 * __pyx_v_fi.strides[0]) ))));
+2155: J[1, m, 1, n] = alpha[m]*s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_47 = __pyx_v_m;
__pyx_t_48 = __pyx_v_m;
__pyx_t_49 = __pyx_v_m;
__pyx_t_50 = __pyx_v_m;
__pyx_t_51 = __pyx_v_n;
__pyx_t_52 = __pyx_v_n;
__pyx_t_53 = 1;
__pyx_t_54 = __pyx_v_m;
__pyx_t_55 = 1;
__pyx_t_56 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_53 * __pyx_v_J.strides[0]) ) + __pyx_t_54 * __pyx_v_J.strides[1]) ) + __pyx_t_55 * __pyx_v_J.strides[2]) ) + __pyx_t_56 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_47 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_48 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_49 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_50 * __pyx_v_CM.strides[0]) ) + __pyx_t_51 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_52 * __pyx_v_fi.strides[0]) ))));
+2156: J[1, m, 2, n] = alpha[m]*s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_57 = __pyx_v_m;
__pyx_t_58 = __pyx_v_m;
__pyx_t_59 = __pyx_v_m;
__pyx_t_60 = __pyx_v_m;
__pyx_t_61 = __pyx_v_n;
__pyx_t_62 = __pyx_v_n;
__pyx_t_63 = __pyx_v_n;
__pyx_t_64 = 1;
__pyx_t_65 = __pyx_v_m;
__pyx_t_66 = 2;
__pyx_t_67 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_64 * __pyx_v_J.strides[0]) ) + __pyx_t_65 * __pyx_v_J.strides[1]) ) + __pyx_t_66 * __pyx_v_J.strides[2]) ) + __pyx_t_67 * __pyx_v_J.strides[3]) )) = ((((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_57 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_58 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_59 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_60 * __pyx_v_CM.strides[0]) ) + __pyx_t_61 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_62 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_63 * __pyx_v_fi.strides[0]) ))));
+2157: J[2, m, 1, n] = balpha[m]*s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_68 = __pyx_v_m;
__pyx_t_69 = __pyx_v_m;
__pyx_t_70 = __pyx_v_m;
__pyx_t_71 = __pyx_v_m;
__pyx_t_72 = __pyx_v_n;
__pyx_t_73 = __pyx_v_n;
__pyx_t_74 = 2;
__pyx_t_75 = __pyx_v_m;
__pyx_t_76 = 1;
__pyx_t_77 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_74 * __pyx_v_J.strides[0]) ) + __pyx_t_75 * __pyx_v_J.strides[1]) ) + __pyx_t_76 * __pyx_v_J.strides[2]) ) + __pyx_t_77 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_68 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_69 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_70 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_71 * __pyx_v_CM.strides[0]) ) + __pyx_t_72 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_73 * __pyx_v_fi.strides[0]) ))));
+2158: J[2, m, 2, n] = balpha[m]*s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_78 = __pyx_v_m;
__pyx_t_79 = __pyx_v_m;
__pyx_t_80 = __pyx_v_m;
__pyx_t_81 = __pyx_v_m;
__pyx_t_82 = __pyx_v_n;
__pyx_t_83 = __pyx_v_n;
__pyx_t_84 = __pyx_v_n;
__pyx_t_85 = 2;
__pyx_t_86 = __pyx_v_m;
__pyx_t_87 = 2;
__pyx_t_88 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_85 * __pyx_v_J.strides[0]) ) + __pyx_t_86 * __pyx_v_J.strides[1]) ) + __pyx_t_87 * __pyx_v_J.strides[2]) ) + __pyx_t_88 * __pyx_v_J.strides[3]) )) = ((((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_78 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_79 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_80 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_81 * __pyx_v_CM.strides[0]) ) + __pyx_t_82 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_83 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_84 * __pyx_v_fi.strides[0]) ))));
}
+2159: J[1, m, 1, m] -= gIa[m]
__pyx_t_89 = __pyx_v_m;
__pyx_t_90 = 1;
__pyx_t_91 = __pyx_v_m;
__pyx_t_92 = 1;
__pyx_t_93 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_90 * __pyx_v_J.strides[0]) ) + __pyx_t_91 * __pyx_v_J.strides[1]) ) + __pyx_t_92 * __pyx_v_J.strides[2]) ) + __pyx_t_93 * __pyx_v_J.strides[3]) )) -= (*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_89 * __pyx_v_gIa.strides[0]) )));
+2160: J[2, m, 2, m] -= gIs[m]
__pyx_t_94 = __pyx_v_m;
__pyx_t_95 = 2;
__pyx_t_96 = __pyx_v_m;
__pyx_t_97 = 2;
__pyx_t_98 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_95 * __pyx_v_J.strides[0]) ) + __pyx_t_96 * __pyx_v_J.strides[1]) ) + __pyx_t_97 * __pyx_v_J.strides[2]) ) + __pyx_t_98 * __pyx_v_J.strides[3]) )) -= (*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_94 * __pyx_v_gIs.strides[0]) )));
}
+2161: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_99 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_99)) __PYX_ERR(0, 2161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_99); __pyx_t_100 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_100)) __PYX_ERR(0, 2161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_100); __pyx_t_101 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_101)) __PYX_ERR(0, 2161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_101); __pyx_t_102 = PyTuple_New(2); if (unlikely(!__pyx_t_102)) __PYX_ERR(0, 2161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_102); __Pyx_GIVEREF(__pyx_t_100); PyTuple_SET_ITEM(__pyx_t_102, 0, __pyx_t_100); __Pyx_GIVEREF(__pyx_t_101); PyTuple_SET_ITEM(__pyx_t_102, 1, __pyx_t_101); __pyx_t_100 = 0; __pyx_t_101 = 0; __pyx_t_101 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_99))) { __pyx_t_101 = PyMethod_GET_SELF(__pyx_t_99); if (likely(__pyx_t_101)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_99); __Pyx_INCREF(__pyx_t_101); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_99, function); } } __pyx_t_3 = (__pyx_t_101) ? __Pyx_PyObject_Call2Args(__pyx_t_99, __pyx_t_101, __pyx_t_102) : __Pyx_PyObject_CallOneArg(__pyx_t_99, __pyx_t_102); __Pyx_XDECREF(__pyx_t_101); __pyx_t_101 = 0; __Pyx_DECREF(__pyx_t_102); __pyx_t_102 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_99); __pyx_t_99 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2161, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
2162:
+2163: cdef noise_correlation(self, double [:] s, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_3SIR_noise_correlation(struct __pyx_obj_6pyross_9inference_SIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_45);
__Pyx_XDECREF(__pyx_t_46);
__Pyx_XDECREF(__pyx_t_47);
__Pyx_XDECREF(__pyx_t_48);
__Pyx_AddTraceback("pyross.inference.SIR.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2164: cdef:
+2165: Py_ssize_t m, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2166: double [:] gIa=self.gIa, gIs=self.gIs
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2166, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2166, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2167: double [:] alpha=self.alpha, balpha=1-self.alpha
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2167, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2167, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2168: double [:, :, :, :] B = self.B
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 2168, __pyx_L1_error) __pyx_v_B = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+2169: for m in range(M): # only fill in the upper triangular form
__pyx_t_1 = __pyx_v_M;
__pyx_t_5 = __pyx_t_1;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_m = __pyx_t_6;
+2170: B[0, m, 0, m] = l[m]*s[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) ))));
+2171: B[0, m, 1, m] = - alpha[m]*l[m]*s[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = 0;
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = 1;
__pyx_t_19 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_16 * __pyx_v_B.strides[0]) ) + __pyx_t_17 * __pyx_v_B.strides[1]) ) + __pyx_t_18 * __pyx_v_B.strides[2]) ) + __pyx_t_19 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_13 * __pyx_v_alpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_14 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_15 * __pyx_v_s.strides[0]) ))));
+2172: B[1, m, 1, m] = alpha[m]*l[m]*s[m] + gIa[m]*Ia[m]
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_m;
__pyx_t_23 = __pyx_v_m;
__pyx_t_24 = __pyx_v_m;
__pyx_t_25 = 1;
__pyx_t_26 = __pyx_v_m;
__pyx_t_27 = 1;
__pyx_t_28 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_25 * __pyx_v_B.strides[0]) ) + __pyx_t_26 * __pyx_v_B.strides[1]) ) + __pyx_t_27 * __pyx_v_B.strides[2]) ) + __pyx_t_28 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_20 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_21 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_22 * __pyx_v_s.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_23 * __pyx_v_gIa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_24 * __pyx_v_Ia.strides[0]) )))));
+2173: B[0, m, 2, m] = - balpha[m]*l[m]*s[m]
__pyx_t_29 = __pyx_v_m;
__pyx_t_30 = __pyx_v_m;
__pyx_t_31 = __pyx_v_m;
__pyx_t_32 = 0;
__pyx_t_33 = __pyx_v_m;
__pyx_t_34 = 2;
__pyx_t_35 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_32 * __pyx_v_B.strides[0]) ) + __pyx_t_33 * __pyx_v_B.strides[1]) ) + __pyx_t_34 * __pyx_v_B.strides[2]) ) + __pyx_t_35 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_29 * __pyx_v_balpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_30 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_31 * __pyx_v_s.strides[0]) ))));
+2174: B[2, m, 2, m] = balpha[m]*l[m]*s[m] + gIs[m]*Is[m]
__pyx_t_36 = __pyx_v_m;
__pyx_t_37 = __pyx_v_m;
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = __pyx_v_m;
__pyx_t_40 = __pyx_v_m;
__pyx_t_41 = 2;
__pyx_t_42 = __pyx_v_m;
__pyx_t_43 = 2;
__pyx_t_44 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_41 * __pyx_v_B.strides[0]) ) + __pyx_t_42 * __pyx_v_B.strides[1]) ) + __pyx_t_43 * __pyx_v_B.strides[2]) ) + __pyx_t_44 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_36 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_37 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_38 * __pyx_v_s.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_39 * __pyx_v_gIs.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_40 * __pyx_v_Is.strides[0]) )))));
}
+2175: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_45 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_45)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_45); __pyx_t_46 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_46)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_46); __pyx_t_47 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_47)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_47); __pyx_t_48 = PyTuple_New(2); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_48); __Pyx_GIVEREF(__pyx_t_46); PyTuple_SET_ITEM(__pyx_t_48, 0, __pyx_t_46); __Pyx_GIVEREF(__pyx_t_47); PyTuple_SET_ITEM(__pyx_t_48, 1, __pyx_t_47); __pyx_t_46 = 0; __pyx_t_47 = 0; __pyx_t_47 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_45))) { __pyx_t_47 = PyMethod_GET_SELF(__pyx_t_45); if (likely(__pyx_t_47)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_45); __Pyx_INCREF(__pyx_t_47); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_45, function); } } __pyx_t_3 = (__pyx_t_47) ? __Pyx_PyObject_Call2Args(__pyx_t_45, __pyx_t_47, __pyx_t_48) : __Pyx_PyObject_CallOneArg(__pyx_t_45, __pyx_t_48); __Pyx_XDECREF(__pyx_t_47); __pyx_t_47 = 0; __Pyx_DECREF(__pyx_t_48); __pyx_t_48 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_45); __pyx_t_45 = 0; __pyx_t_45 = PyTuple_New(2); if (unlikely(!__pyx_t_45)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_45); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_45, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_45, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_48 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_45); if (unlikely(!__pyx_t_48)) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_48); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_45); __pyx_t_45 = 0; if (!(likely(((__pyx_t_48) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_48, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2175, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_48); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_48); __pyx_t_48 = 0;
2176:
2177: @cython.wraparound(False)
2178: @cython.boundscheck(False)
2179: @cython.cdivision(True)
2180: @cython.nonecheck(False)
+2181: cdef class SEIR(SIR_type):
struct __pyx_obj_6pyross_9inference_SEIR {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *gE;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SEIR {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SEIR *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SEIR *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SEIR *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_SEIR *__pyx_vtabptr_6pyross_9inference_SEIR;
2182: """
2183: Susceptible, Exposed, Infected, Removed (SEIR)
2184:
2185: * Ia: asymptomatic
2186: * Is: symptomatic
2187:
2188: To initialise the SEIR class,
2189:
2190: Parameters
2191: ----------
2192: parameters: dict
2193: Contains the following keys:
2194:
2195: alpha: float or np.array(M)
2196: Fraction of infected who are asymptomatic.
2197: beta: float
2198: Rate of spread of infection.
2199: gIa: float
2200: Rate of removal from asymptomatic individuals.
2201: gIs: float
2202: Rate of removal from symptomatic individuals.
2203: fsa: float
2204: Fraction by which symptomatic individuals self isolate.
2205: gE: float
2206: rate of removal from exposed individuals.
2207: M: int
2208: Number of age groups
2209: fi: float numpy.array
2210: Fraction of each age group
2211: N: int
2212: Total population
2213: steps: int
2214: The number of internal integration steps performed between the observed points (not used in tangent space inference).
2215: The minimal is 4, as required by the cubic spline fit used for interpolation.
2216: For robustness, set steps to be large, det_method='LSODA', lyapunov_method='LSODA'.
2217: For speed, set steps to be 4, det_method='RK2', lyapunov_method='euler'.
2218: For a combination of the two, choose something in between.
2219: det_method: str, optional
2220: The integration method used for deterministic integration.
2221: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2222: lyapunov_method: str, optional
2223: The integration method used for the integration of the Lyapunov equation for the covariance.
2224: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2225: """
2226:
2227: cdef:
+2228: readonly np.ndarray gE
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_2gE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_2gE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_2gE___get__(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_2gE___get__(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gE));
__pyx_r = ((PyObject *)__pyx_v_self->gE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2229:
+2230: def __init__(self, parameters, M, fi, N, steps, det_method='LSODA', lyapunov_method='LSODA'):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_4SEIR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_4SEIR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_N = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_N,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
values[5] = ((PyObject *)__pyx_n_u_LSODA);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 1); __PYX_ERR(0, 2230, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 2); __PYX_ERR(0, 2230, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 3); __PYX_ERR(0, 2230, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 4); __PYX_ERR(0, 2230, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[6] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2230, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_M = values[1];
__pyx_v_fi = values[2];
__pyx_v_N = values[3];
__pyx_v_steps = values[4];
__pyx_v_det_method = values[5];
__pyx_v_lyapunov_method = values[6];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2230, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEIR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR___init__(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self), __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_4SEIR___init__(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_N, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SEIR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2231: super().__init__(parameters, 4, M, fi, N, steps, det_method, lyapunov_method)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_4, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_4, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(8+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_4); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_N); __Pyx_GIVEREF(__pyx_v_N); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_N); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_lyapunov_method); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2232: self.class_index_dict = {'S':0, 'E':1, 'Ia':2, 'Is':3}
__pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_S, __pyx_int_0) < 0) __PYX_ERR(0, 2232, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_E, __pyx_int_1) < 0) __PYX_ERR(0, 2232, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ia, __pyx_int_2) < 0) __PYX_ERR(0, 2232, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Is, __pyx_int_3) < 0) __PYX_ERR(0, 2232, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2233:
+2234: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_2infection_indices(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_2infection_indices(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SEIR.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2235: return [1, 2, 3]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyList_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_1); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_2); __Pyx_INCREF(__pyx_int_3); __Pyx_GIVEREF(__pyx_int_3); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_int_3); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
2236:
+2237: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_4set_params(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_4set_params(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEIR.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2238: super().set_params(parameters)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEIR)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2239: self.gE = pyross.utils.age_dep_rates(parameters['gE'], self.M, 'gE')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gE); __Pyx_GIVEREF(__pyx_n_u_gE); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_gE); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2239, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gE); __Pyx_DECREF(((PyObject *)__pyx_v_self->gE)); __pyx_v_self->gE = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
2240:
+2241: def make_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_7make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_7make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_6make_det_model(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_6make_det_model(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SEIR.make_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2242: return pyross.deterministic.SEIR(parameters, self.M, self.fi*self.N)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.N); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SEIR), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2242, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
2243:
+2244: def make_params_dict(self, params=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_9make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SEIR_9make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,0};
PyObject* values[1] = {0};
values[0] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params);
if (value) { values[0] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "make_params_dict") < 0)) __PYX_ERR(0, 2244, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("make_params_dict", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2244, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEIR.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_4SEIR_8make_params_dict(((struct __pyx_obj_6pyross_9inference_SEIR *)__pyx_v_self), __pyx_v_params);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SEIR_8make_params_dict(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, PyObject *__pyx_v_params) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SEIR.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2245: if params is None:
__pyx_t_1 = (__pyx_v_params == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+2246: parameters = {'alpha':self.alpha, 'beta':self.beta, 'gIa':self.gIa,
__pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_alpha, ((PyObject *)__pyx_v_self->__pyx_base.alpha)) < 0) __PYX_ERR(0, 2246, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_beta, ((PyObject *)__pyx_v_self->__pyx_base.beta)) < 0) __PYX_ERR(0, 2246, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIa, ((PyObject *)__pyx_v_self->__pyx_base.gIa)) < 0) __PYX_ERR(0, 2246, __pyx_L1_error)
+2247: 'gIs':self.gIs, 'gE':self.gE, 'fsa':self.fsa}
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIs, ((PyObject *)__pyx_v_self->__pyx_base.gIs)) < 0) __PYX_ERR(0, 2246, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gE, ((PyObject *)__pyx_v_self->gE)) < 0) __PYX_ERR(0, 2246, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 2246, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
2248: else:
+2249: parameters = {'alpha':params[0], 'beta':params[1], 'gIa':params[2],
/*else*/ {
__pyx_t_3 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_alpha, __pyx_t_4) < 0) __PYX_ERR(0, 2249, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_beta, __pyx_t_4) < 0) __PYX_ERR(0, 2249, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2249, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIa, __pyx_t_4) < 0) __PYX_ERR(0, 2249, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2250: 'gIs':params[3], 'gE': params[4], 'fsa':self.fsa}
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIs, __pyx_t_4) < 0) __PYX_ERR(0, 2249, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gE, __pyx_t_4) < 0) __PYX_ERR(0, 2249, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 2249, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:;
+2251: return parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_parameters); __pyx_r = __pyx_v_parameters; goto __pyx_L0;
2252:
2253:
+2254: cdef lyapunov_fun(self, double t, double [:] sig, spline):
static PyObject *__pyx_f_6pyross_9inference_4SEIR_lyapunov_fun(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, double __pyx_v_t, __Pyx_memviewslice __pyx_v_sig, PyObject *__pyx_v_spline) {
__Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_e = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lyapunov_fun", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("pyross.inference.SEIR.lyapunov_fun", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_e, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2255: cdef:
2256: double [:] x, s, e, Ia, Is
+2257: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2258: x = spline(t)
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_spline); __pyx_t_4 = __pyx_v_spline; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2258, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_x = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2259: s = x[0:M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2259, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2260: e = x[M:2*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2260, __pyx_L1_error)
}
__pyx_v_e = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2261: Ia = x[2*M:3*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2261, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2262: Is = x[3*M:4*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2262, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2263: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2263, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2263, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2263, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_l = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2264: self.fill_lambdas(Ia, Is, l)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2265: self.jacobian(s, l)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2265, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2266: self.noise_correlation(s, e, Ia, Is, l)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2267: self.compute_dsigdt(sig)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.compute_dsigdt(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sig); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2268:
+2269: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t, contactMatrix,
static PyObject *__pyx_f_6pyross_9inference_4SEIR_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, PyObject *__pyx_v_contactMatrix, struct __pyx_opt_args_6pyross_9inference_4SEIR_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEIR.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_e, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_4SEIR_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+2270: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_e = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
2271: cdef:
2272: double [:] s, e, Ia, Is
+2273: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2274: s = x[0:M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2274, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2275: e = x[M:2*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2275, __pyx_L1_error)
}
__pyx_v_e = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2276: Ia = x[2*M:3*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2276, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2277: Is = x[3*M:4*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2277, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2278: self.CM = contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_contactMatrix); __pyx_t_6 = __pyx_v_contactMatrix; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2278, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2278, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+2279: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2279, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2279, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2280: self.fill_lambdas(Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2281: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2281, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2282: self.noise_correlation(s, e, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2282, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2283: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2283, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2284: self.jacobian(s, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEIR *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2284, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
2285:
+2286: cdef fill_lambdas(self, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_4SEIR_fill_lambdas(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_AddTraceback("pyross.inference.SEIR.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2287: cdef:
+2288: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 2288, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+2289: double [:] fsa=self.fsa, beta=self.beta, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2289, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2289, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2289, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2290: Py_ssize_t m, n, M=self.M
__pyx_t_3 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_3;
+2291: for m in range(M):
__pyx_t_3 = __pyx_v_M;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_m = __pyx_t_5;
+2292: for n in range(M):
__pyx_t_6 = __pyx_v_M;
__pyx_t_7 = __pyx_t_6;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_n = __pyx_t_8;
+2293: l[m] += beta[m]*CM[m,n]*(Ia[n]+fsa[n]*Is[n])/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_m;
*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_16 * __pyx_v_l.strides[0]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * ((*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) ))) + ((*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_13 * __pyx_v_fsa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_14 * __pyx_v_Is.strides[0]) )))))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_15 * __pyx_v_fi.strides[0]) ))));
}
}
2294:
+2295: cdef jacobian(self, double [:] s, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_4SEIR_jacobian(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_86);
__Pyx_XDECREF(__pyx_t_87);
__Pyx_XDECREF(__pyx_t_88);
__Pyx_XDECREF(__pyx_t_89);
__Pyx_AddTraceback("pyross.inference.SEIR.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2296: cdef:
+2297: Py_ssize_t m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+2298: double [:] gIa=self.gIa, gIs=self.gIs, gE=self.gE, fsa=self.fsa, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2298, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2298, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2298, __pyx_L1_error) __pyx_v_gE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2298, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2298, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2299: double [:] alpha=self.alpha, balpha=1-self.alpha, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2299, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2299, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2299, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2299, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2300: double [:, :, :, :] J = self.J
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 2300, __pyx_L1_error) __pyx_v_J = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+2301: double [:, :] CM=self.CM
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2301, __pyx_L1_error) __pyx_v_CM = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+2302: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_6 = __pyx_t_1;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_m = __pyx_t_7;
+2303: J[0, m, 0, m] = -l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) ))));
+2304: J[1, m, 0, m] = l[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = 1;
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = 0;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_14 * __pyx_v_J.strides[0]) ) + __pyx_t_15 * __pyx_v_J.strides[1]) ) + __pyx_t_16 * __pyx_v_J.strides[2]) ) + __pyx_t_17 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_13 * __pyx_v_l.strides[0]) )));
+2305: J[1, m, 1, m] = - gE[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = 1;
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = 1;
__pyx_t_22 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_19 * __pyx_v_J.strides[0]) ) + __pyx_t_20 * __pyx_v_J.strides[1]) ) + __pyx_t_21 * __pyx_v_J.strides[2]) ) + __pyx_t_22 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_18 * __pyx_v_gE.strides[0]) ))));
+2306: J[2, m, 1, m] = alpha[m]*gE[m]
__pyx_t_23 = __pyx_v_m;
__pyx_t_24 = __pyx_v_m;
__pyx_t_25 = 2;
__pyx_t_26 = __pyx_v_m;
__pyx_t_27 = 1;
__pyx_t_28 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_25 * __pyx_v_J.strides[0]) ) + __pyx_t_26 * __pyx_v_J.strides[1]) ) + __pyx_t_27 * __pyx_v_J.strides[2]) ) + __pyx_t_28 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_23 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_24 * __pyx_v_gE.strides[0]) ))));
+2307: J[2, m, 2, m] = - gIa[m]
__pyx_t_29 = __pyx_v_m;
__pyx_t_30 = 2;
__pyx_t_31 = __pyx_v_m;
__pyx_t_32 = 2;
__pyx_t_33 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_30 * __pyx_v_J.strides[0]) ) + __pyx_t_31 * __pyx_v_J.strides[1]) ) + __pyx_t_32 * __pyx_v_J.strides[2]) ) + __pyx_t_33 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_29 * __pyx_v_gIa.strides[0]) ))));
+2308: J[3, m, 1, m] = balpha[m]*gE[m]
__pyx_t_34 = __pyx_v_m;
__pyx_t_35 = __pyx_v_m;
__pyx_t_36 = 3;
__pyx_t_37 = __pyx_v_m;
__pyx_t_38 = 1;
__pyx_t_39 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_36 * __pyx_v_J.strides[0]) ) + __pyx_t_37 * __pyx_v_J.strides[1]) ) + __pyx_t_38 * __pyx_v_J.strides[2]) ) + __pyx_t_39 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_34 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_35 * __pyx_v_gE.strides[0]) ))));
+2309: J[3, m, 3, m] = - gIs[m]
__pyx_t_40 = __pyx_v_m;
__pyx_t_41 = 3;
__pyx_t_42 = __pyx_v_m;
__pyx_t_43 = 3;
__pyx_t_44 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_41 * __pyx_v_J.strides[0]) ) + __pyx_t_42 * __pyx_v_J.strides[1]) ) + __pyx_t_43 * __pyx_v_J.strides[2]) ) + __pyx_t_44 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_40 * __pyx_v_gIs.strides[0]) ))));
+2310: for n in range(M):
__pyx_t_45 = __pyx_v_M;
__pyx_t_46 = __pyx_t_45;
for (__pyx_t_47 = 0; __pyx_t_47 < __pyx_t_46; __pyx_t_47+=1) {
__pyx_v_n = __pyx_t_47;
+2311: J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_48 = __pyx_v_m;
__pyx_t_49 = __pyx_v_m;
__pyx_t_50 = __pyx_v_m;
__pyx_t_51 = __pyx_v_n;
__pyx_t_52 = __pyx_v_n;
__pyx_t_53 = 0;
__pyx_t_54 = __pyx_v_m;
__pyx_t_55 = 2;
__pyx_t_56 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_53 * __pyx_v_J.strides[0]) ) + __pyx_t_54 * __pyx_v_J.strides[1]) ) + __pyx_t_55 * __pyx_v_J.strides[2]) ) + __pyx_t_56 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_48 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_49 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_50 * __pyx_v_CM.strides[0]) ) + __pyx_t_51 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_52 * __pyx_v_fi.strides[0]) ))));
+2312: J[0, m, 3, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_57 = __pyx_v_m;
__pyx_t_58 = __pyx_v_m;
__pyx_t_59 = __pyx_v_m;
__pyx_t_60 = __pyx_v_n;
__pyx_t_61 = __pyx_v_n;
__pyx_t_62 = __pyx_v_n;
__pyx_t_63 = 0;
__pyx_t_64 = __pyx_v_m;
__pyx_t_65 = 3;
__pyx_t_66 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_63 * __pyx_v_J.strides[0]) ) + __pyx_t_64 * __pyx_v_J.strides[1]) ) + __pyx_t_65 * __pyx_v_J.strides[2]) ) + __pyx_t_66 * __pyx_v_J.strides[3]) )) = (((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_57 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_58 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_59 * __pyx_v_CM.strides[0]) ) + __pyx_t_60 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_61 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_62 * __pyx_v_fi.strides[0]) ))));
+2313: J[1, m, 2, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_67 = __pyx_v_m;
__pyx_t_68 = __pyx_v_m;
__pyx_t_69 = __pyx_v_m;
__pyx_t_70 = __pyx_v_n;
__pyx_t_71 = __pyx_v_n;
__pyx_t_72 = 1;
__pyx_t_73 = __pyx_v_m;
__pyx_t_74 = 2;
__pyx_t_75 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_72 * __pyx_v_J.strides[0]) ) + __pyx_t_73 * __pyx_v_J.strides[1]) ) + __pyx_t_74 * __pyx_v_J.strides[2]) ) + __pyx_t_75 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_67 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_68 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_69 * __pyx_v_CM.strides[0]) ) + __pyx_t_70 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_71 * __pyx_v_fi.strides[0]) ))));
+2314: J[1, m, 3, n] = s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_76 = __pyx_v_m;
__pyx_t_77 = __pyx_v_m;
__pyx_t_78 = __pyx_v_m;
__pyx_t_79 = __pyx_v_n;
__pyx_t_80 = __pyx_v_n;
__pyx_t_81 = __pyx_v_n;
__pyx_t_82 = 1;
__pyx_t_83 = __pyx_v_m;
__pyx_t_84 = 3;
__pyx_t_85 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_82 * __pyx_v_J.strides[0]) ) + __pyx_t_83 * __pyx_v_J.strides[1]) ) + __pyx_t_84 * __pyx_v_J.strides[2]) ) + __pyx_t_85 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_76 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_77 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_78 * __pyx_v_CM.strides[0]) ) + __pyx_t_79 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_80 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_81 * __pyx_v_fi.strides[0]) ))));
}
}
+2315: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_86 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_86)) __PYX_ERR(0, 2315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_86); __pyx_t_87 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_87)) __PYX_ERR(0, 2315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_87); __pyx_t_88 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_88)) __PYX_ERR(0, 2315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_88); __pyx_t_89 = PyTuple_New(2); if (unlikely(!__pyx_t_89)) __PYX_ERR(0, 2315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_89); __Pyx_GIVEREF(__pyx_t_87); PyTuple_SET_ITEM(__pyx_t_89, 0, __pyx_t_87); __Pyx_GIVEREF(__pyx_t_88); PyTuple_SET_ITEM(__pyx_t_89, 1, __pyx_t_88); __pyx_t_87 = 0; __pyx_t_88 = 0; __pyx_t_88 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_86))) { __pyx_t_88 = PyMethod_GET_SELF(__pyx_t_86); if (likely(__pyx_t_88)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_86); __Pyx_INCREF(__pyx_t_88); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_86, function); } } __pyx_t_3 = (__pyx_t_88) ? __Pyx_PyObject_Call2Args(__pyx_t_86, __pyx_t_88, __pyx_t_89) : __Pyx_PyObject_CallOneArg(__pyx_t_86, __pyx_t_89); __Pyx_XDECREF(__pyx_t_88); __pyx_t_88 = 0; __Pyx_DECREF(__pyx_t_89); __pyx_t_89 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_86); __pyx_t_86 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2315, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
2316:
+2317: cdef noise_correlation(self, double [:] s, double [:] e, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_4SEIR_noise_correlation(struct __pyx_obj_6pyross_9inference_SEIR *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_e, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_59);
__Pyx_XDECREF(__pyx_t_60);
__Pyx_XDECREF(__pyx_t_61);
__Pyx_XDECREF(__pyx_t_62);
__Pyx_AddTraceback("pyross.inference.SEIR.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2318: cdef:
+2319: Py_ssize_t m, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2320: double [:] gIa=self.gIa, gIs=self.gIs, gE=self.gE
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2320, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2320, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2320, __pyx_L1_error) __pyx_v_gE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2321: double [:] alpha=self.alpha, balpha=1-self.alpha
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2321, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2321, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2322: double [:, :, :, :] B = self.B
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 2322, __pyx_L1_error) __pyx_v_B = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+2323: for m in range(M): # only fill in the upper triangular form
__pyx_t_1 = __pyx_v_M;
__pyx_t_5 = __pyx_t_1;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_m = __pyx_t_6;
+2324: B[0, m, 0, m] = l[m]*s[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) ))));
+2325: B[0, m, 1, m] = - l[m]*s[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = 0;
__pyx_t_16 = __pyx_v_m;
__pyx_t_17 = 1;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_16 * __pyx_v_B.strides[1]) ) + __pyx_t_17 * __pyx_v_B.strides[2]) ) + __pyx_t_18 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_13 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_14 * __pyx_v_s.strides[0]) ))));
+2326: B[1, m, 1, m] = l[m]*s[m] + gE[m]*e[m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_m;
__pyx_t_23 = 1;
__pyx_t_24 = __pyx_v_m;
__pyx_t_25 = 1;
__pyx_t_26 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_23 * __pyx_v_B.strides[0]) ) + __pyx_t_24 * __pyx_v_B.strides[1]) ) + __pyx_t_25 * __pyx_v_B.strides[2]) ) + __pyx_t_26 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_19 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_20 * __pyx_v_s.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_21 * __pyx_v_gE.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_22 * __pyx_v_e.strides[0]) )))));
+2327: B[1, m, 2, m] = -alpha[m]*gE[m]*e[m]
__pyx_t_27 = __pyx_v_m;
__pyx_t_28 = __pyx_v_m;
__pyx_t_29 = __pyx_v_m;
__pyx_t_30 = 1;
__pyx_t_31 = __pyx_v_m;
__pyx_t_32 = 2;
__pyx_t_33 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_30 * __pyx_v_B.strides[0]) ) + __pyx_t_31 * __pyx_v_B.strides[1]) ) + __pyx_t_32 * __pyx_v_B.strides[2]) ) + __pyx_t_33 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_27 * __pyx_v_alpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_28 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_29 * __pyx_v_e.strides[0]) ))));
+2328: B[1, m, 3, m] = -balpha[m]*gE[m]*e[m]
__pyx_t_34 = __pyx_v_m;
__pyx_t_35 = __pyx_v_m;
__pyx_t_36 = __pyx_v_m;
__pyx_t_37 = 1;
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = 3;
__pyx_t_40 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_37 * __pyx_v_B.strides[0]) ) + __pyx_t_38 * __pyx_v_B.strides[1]) ) + __pyx_t_39 * __pyx_v_B.strides[2]) ) + __pyx_t_40 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_34 * __pyx_v_balpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_35 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_36 * __pyx_v_e.strides[0]) ))));
+2329: B[2, m, 2, m] = alpha[m]*gE[m]*e[m]+gIa[m]*Ia[m]
__pyx_t_41 = __pyx_v_m;
__pyx_t_42 = __pyx_v_m;
__pyx_t_43 = __pyx_v_m;
__pyx_t_44 = __pyx_v_m;
__pyx_t_45 = __pyx_v_m;
__pyx_t_46 = 2;
__pyx_t_47 = __pyx_v_m;
__pyx_t_48 = 2;
__pyx_t_49 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_46 * __pyx_v_B.strides[0]) ) + __pyx_t_47 * __pyx_v_B.strides[1]) ) + __pyx_t_48 * __pyx_v_B.strides[2]) ) + __pyx_t_49 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_41 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_42 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_43 * __pyx_v_e.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_44 * __pyx_v_gIa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_45 * __pyx_v_Ia.strides[0]) )))));
+2330: B[3, m, 3, m] = balpha[m]*gE[m]*e[m]+gIs[m]*Is[m]
__pyx_t_50 = __pyx_v_m;
__pyx_t_51 = __pyx_v_m;
__pyx_t_52 = __pyx_v_m;
__pyx_t_53 = __pyx_v_m;
__pyx_t_54 = __pyx_v_m;
__pyx_t_55 = 3;
__pyx_t_56 = __pyx_v_m;
__pyx_t_57 = 3;
__pyx_t_58 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_55 * __pyx_v_B.strides[0]) ) + __pyx_t_56 * __pyx_v_B.strides[1]) ) + __pyx_t_57 * __pyx_v_B.strides[2]) ) + __pyx_t_58 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_50 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_51 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_52 * __pyx_v_e.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_53 * __pyx_v_gIs.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_54 * __pyx_v_Is.strides[0]) )))));
}
+2331: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_59 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_59)) __PYX_ERR(0, 2331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_59); __pyx_t_60 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_60)) __PYX_ERR(0, 2331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_60); __pyx_t_61 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_61)) __PYX_ERR(0, 2331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_61); __pyx_t_62 = PyTuple_New(2); if (unlikely(!__pyx_t_62)) __PYX_ERR(0, 2331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_62); __Pyx_GIVEREF(__pyx_t_60); PyTuple_SET_ITEM(__pyx_t_62, 0, __pyx_t_60); __Pyx_GIVEREF(__pyx_t_61); PyTuple_SET_ITEM(__pyx_t_62, 1, __pyx_t_61); __pyx_t_60 = 0; __pyx_t_61 = 0; __pyx_t_61 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_59))) { __pyx_t_61 = PyMethod_GET_SELF(__pyx_t_59); if (likely(__pyx_t_61)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_59); __Pyx_INCREF(__pyx_t_61); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_59, function); } } __pyx_t_3 = (__pyx_t_61) ? __Pyx_PyObject_Call2Args(__pyx_t_59, __pyx_t_61, __pyx_t_62) : __Pyx_PyObject_CallOneArg(__pyx_t_59, __pyx_t_62); __Pyx_XDECREF(__pyx_t_61); __pyx_t_61 = 0; __Pyx_DECREF(__pyx_t_62); __pyx_t_62 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_59); __pyx_t_59 = 0; __pyx_t_59 = PyTuple_New(2); if (unlikely(!__pyx_t_59)) __PYX_ERR(0, 2331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_59); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_59, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_59, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_62 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_59); if (unlikely(!__pyx_t_62)) __PYX_ERR(0, 2331, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_62); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_59); __pyx_t_59 = 0; if (!(likely(((__pyx_t_62) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_62, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2331, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_62); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_62); __pyx_t_62 = 0;
2332:
2333:
2334: @cython.wraparound(False)
2335: @cython.boundscheck(False)
2336: @cython.cdivision(True)
2337: @cython.nonecheck(False)
+2338: cdef class SEAIRQ(SIR_type):
struct __pyx_obj_6pyross_9inference_SEAIRQ {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *gE;
PyArrayObject *gA;
PyArrayObject *tE;
PyArrayObject *tA;
PyArrayObject *tIa;
PyArrayObject *tIs;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SEAIRQ *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SEAIRQ *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SEAIRQ *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *__pyx_vtabptr_6pyross_9inference_SEAIRQ;
2339: """
2340: Susceptible, Exposed, Asymptomatic and infected, Infected, Removed, Quarantined (SEAIRQ)
2341:
2342: * Ia: asymptomatic
2343: * Is: symptomatic
2344: * E: exposed
2345: * A: asymptomatic and infectious
2346: * Q: quarantined
2347:
2348: To initialise the SEAIRQ class,
2349:
2350: Parameters
2351: ----------
2352: parameters: dict
2353: Contains the following keys:
2354:
2355: alpha: float or np.array(M)
2356: Fraction of infected who are asymptomatic.
2357: beta: float
2358: Rate of spread of infection.
2359: gIa: float
2360: Rate of removal from asymptomatic individuals.
2361: gIs: float
2362: Rate of removal from symptomatic individuals.
2363: gE: float
2364: rate of removal from exposed individuals.
2365: gA: float
2366: rate of removal from activated individuals.
2367: fsa: float
2368: fraction by which symptomatic individuals self isolate.
2369: tE: float
2370: testing rate and contact tracing of exposeds
2371: tA: float
2372: testing rate and contact tracing of activateds
2373: tIa: float
2374: testing rate and contact tracing of asymptomatics
2375: tIs: float
2376: testing rate and contact tracing of symptomatics
2377: M: int
2378: Number of age groups.
2379: fi: float numpy.array
2380: Fraction of each age group.
2381: N: int
2382: Total population.
2383: steps: int
2384: The number of internal integration steps performed between the observed points (not used in tangent space inference).
2385: The minimal is 4, as required by the cubic spline fit used for interpolation.
2386: For robustness, set steps to be large, det_method='LSODA', lyapunov_method='LSODA'.
2387: For speed, set steps to be 4, det_method='RK2', lyapunov_method='euler'.
2388: For a combination of the two, choose something in between.
2389: det_method: str, optional
2390: The integration method used for deterministic integration.
2391: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2392: lyapunov_method: str, optional
2393: The integration method used for the integration of the Lyapunov equation for the covariance.
2394: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2395: """
2396:
2397: cdef:
+2398: readonly np.ndarray gE, gA, tE, tA, tIa, tIs
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2gE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2gE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2gE___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2gE___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gE));
__pyx_r = ((PyObject *)__pyx_v_self->gE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2gA_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2gA_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2gA___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2gA___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gA));
__pyx_r = ((PyObject *)__pyx_v_self->gA);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2tE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2tE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2tE___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2tE___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->tE));
__pyx_r = ((PyObject *)__pyx_v_self->tE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2tA_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_2tA_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2tA___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2tA___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->tA));
__pyx_r = ((PyObject *)__pyx_v_self->tA);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3tIa_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3tIa_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_3tIa___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_3tIa___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->tIa));
__pyx_r = ((PyObject *)__pyx_v_self->tIa);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3tIs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3tIs_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_3tIs___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_3tIs___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->tIs));
__pyx_r = ((PyObject *)__pyx_v_self->tIs);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2399:
+2400: def __init__(self, parameters, M, fi, N, steps, det_method='LSODA', lyapunov_method='LSODA'):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_6SEAIRQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_6SEAIRQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_N = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_N,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
values[5] = ((PyObject *)__pyx_n_u_LSODA);
values[6] = ((PyObject *)__pyx_n_u_LSODA);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 1); __PYX_ERR(0, 2400, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 2); __PYX_ERR(0, 2400, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 3); __PYX_ERR(0, 2400, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, 4); __PYX_ERR(0, 2400, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[5] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[6] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2400, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_M = values[1];
__pyx_v_fi = values[2];
__pyx_v_N = values[3];
__pyx_v_steps = values[4];
__pyx_v_det_method = values[5];
__pyx_v_lyapunov_method = values[6];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 5, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2400, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEAIRQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ___init__(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self), __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_6SEAIRQ___init__(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_N, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2401: super().__init__(parameters, 6, M, fi, N, steps, det_method, lyapunov_method)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_6, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_6, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(8+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_6); __Pyx_GIVEREF(__pyx_int_6); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_6); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_N); __Pyx_GIVEREF(__pyx_v_N); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_N); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_lyapunov_method); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2401, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2402: self.class_index_dict = {'S':0, 'E':1, 'A':2, 'Ia':3, 'Is':4, 'Q':5}
__pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2402, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_S, __pyx_int_0) < 0) __PYX_ERR(0, 2402, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_E, __pyx_int_1) < 0) __PYX_ERR(0, 2402, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_A, __pyx_int_2) < 0) __PYX_ERR(0, 2402, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ia, __pyx_int_3) < 0) __PYX_ERR(0, 2402, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Is, __pyx_int_4) < 0) __PYX_ERR(0, 2402, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Q, __pyx_int_5) < 0) __PYX_ERR(0, 2402, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2403:
+2404: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_2infection_indices(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_2infection_indices(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2405: return [1, 2, 3, 4]
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyList_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2405, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyList_SET_ITEM(__pyx_t_1, 0, __pyx_int_1); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyList_SET_ITEM(__pyx_t_1, 1, __pyx_int_2); __Pyx_INCREF(__pyx_int_3); __Pyx_GIVEREF(__pyx_int_3); PyList_SET_ITEM(__pyx_t_1, 2, __pyx_int_3); __Pyx_INCREF(__pyx_int_4); __Pyx_GIVEREF(__pyx_int_4); PyList_SET_ITEM(__pyx_t_1, 3, __pyx_int_4); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
2406:
+2407: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_4set_params(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_4set_params(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2408: super().set_params(parameters)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2408, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2409: self.gE = pyross.utils.age_dep_rates(parameters['gE'], self.M, 'gE')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gE); __Pyx_GIVEREF(__pyx_n_u_gE); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_gE); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2409, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gE); __Pyx_DECREF(((PyObject *)__pyx_v_self->gE)); __pyx_v_self->gE = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2410: self.gA = pyross.utils.age_dep_rates(parameters['gA'], self.M, 'gA')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gA); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gA}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gA}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gA); __Pyx_GIVEREF(__pyx_n_u_gA); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_n_u_gA); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2410, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gA); __Pyx_DECREF(((PyObject *)__pyx_v_self->gA)); __pyx_v_self->gA = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2411: self.tE = pyross.utils.age_dep_rates(parameters['tE'], self.M, 'tE')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_tE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_tE}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_tE}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_tE); __Pyx_GIVEREF(__pyx_n_u_tE); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_n_u_tE); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2411, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->tE); __Pyx_DECREF(((PyObject *)__pyx_v_self->tE)); __pyx_v_self->tE = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2412: self.tA = pyross.utils.age_dep_rates(parameters['tA'], self.M, 'tA')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_tA); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_tA}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_tA}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_tA); __Pyx_GIVEREF(__pyx_n_u_tA); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_tA); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2412, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->tA); __Pyx_DECREF(((PyObject *)__pyx_v_self->tA)); __pyx_v_self->tA = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2413: self.tIa = pyross.utils.age_dep_rates(parameters['tIa'], self.M, 'tIa')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_tIa); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_tIa}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_tIa}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_tIa); __Pyx_GIVEREF(__pyx_n_u_tIa); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_n_u_tIa); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2413, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->tIa); __Pyx_DECREF(((PyObject *)__pyx_v_self->tIa)); __pyx_v_self->tIa = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2414: self.tIs = pyross.utils.age_dep_rates(parameters['tIs'], self.M, 'tIs')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_tIs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_tIs}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_tIs}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_tIs); __Pyx_GIVEREF(__pyx_n_u_tIs); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_n_u_tIs); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2414, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->tIs); __Pyx_DECREF(((PyObject *)__pyx_v_self->tIs)); __pyx_v_self->tIs = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
2415:
+2416: def make_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_7make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_7make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_6make_det_model(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_6make_det_model(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.make_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2417: return pyross.deterministic.SEAIRQ(parameters, self.M, self.fi*self.N)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.N); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SEAIRQ), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2417, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
2418:
+2419: def make_params_dict(self, params=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_9make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_6SEAIRQ_9make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,0};
PyObject* values[1] = {0};
values[0] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params);
if (value) { values[0] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "make_params_dict") < 0)) __PYX_ERR(0, 2419, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("make_params_dict", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2419, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEAIRQ.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_6SEAIRQ_8make_params_dict(((struct __pyx_obj_6pyross_9inference_SEAIRQ *)__pyx_v_self), __pyx_v_params);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_6SEAIRQ_8make_params_dict(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, PyObject *__pyx_v_params) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2420: if params is None:
__pyx_t_1 = (__pyx_v_params == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+2421: parameters = {'alpha':self.alpha,
__pyx_t_3 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2421, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_alpha, ((PyObject *)__pyx_v_self->__pyx_base.alpha)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
+2422: 'beta':self.beta,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_beta, ((PyObject *)__pyx_v_self->__pyx_base.beta)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
+2423: 'gIa':self.gIa,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIa, ((PyObject *)__pyx_v_self->__pyx_base.gIa)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
+2424: 'gIs':self.gIs,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIs, ((PyObject *)__pyx_v_self->__pyx_base.gIs)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
+2425: 'gE':self.gE,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gE, ((PyObject *)__pyx_v_self->gE)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
+2426: 'gA':self.gA,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gA, ((PyObject *)__pyx_v_self->gA)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
+2427: 'fsa': self.fsa,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tS, __pyx_int_0) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
2428: 'tS': 0,
+2429: 'tE': self.tE,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tE, ((PyObject *)__pyx_v_self->tE)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
+2430: 'tA': self.tA,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tA, ((PyObject *)__pyx_v_self->tA)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
+2431: 'tIa': self.tIa,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tIa, ((PyObject *)__pyx_v_self->tIa)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error)
+2432: 'tIs': self.tIs
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tIs, ((PyObject *)__pyx_v_self->tIs)) < 0) __PYX_ERR(0, 2421, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
2433: }
2434: else:
+2435: parameters = {'alpha':params[0],
/*else*/ {
__pyx_t_3 = __Pyx_PyDict_NewPresized(12); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2435, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2435, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_alpha, __pyx_t_4) < 0) __PYX_ERR(0, 2435, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2436: 'beta':params[1],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2436, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_beta, __pyx_t_4) < 0) __PYX_ERR(0, 2435, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2437: 'gIa':params[2],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2437, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIa, __pyx_t_4) < 0) __PYX_ERR(0, 2435, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2438: 'gIs':params[3],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2438, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIs, __pyx_t_4) < 0) __PYX_ERR(0, 2435, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2439: 'gE': params[4],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2439, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gE, __pyx_t_4) < 0) __PYX_ERR(0, 2435, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2440: 'gA': params[5],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2440, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gA, __pyx_t_4) < 0) __PYX_ERR(0, 2435, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2441: 'fsa': self.fsa,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 2435, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tS, __pyx_int_0) < 0) __PYX_ERR(0, 2435, __pyx_L1_error)
2442: 'tS': 0,
+2443: 'tE': self.tE,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tE, ((PyObject *)__pyx_v_self->tE)) < 0) __PYX_ERR(0, 2435, __pyx_L1_error)
+2444: 'tA': self.tA,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tA, ((PyObject *)__pyx_v_self->tA)) < 0) __PYX_ERR(0, 2435, __pyx_L1_error)
+2445: 'tIa': self.tIa,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tIa, ((PyObject *)__pyx_v_self->tIa)) < 0) __PYX_ERR(0, 2435, __pyx_L1_error)
+2446: 'tIs': self.tIs
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_tIs, ((PyObject *)__pyx_v_self->tIs)) < 0) __PYX_ERR(0, 2435, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:;
2447: }
+2448: return parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_parameters); __pyx_r = __pyx_v_parameters; goto __pyx_L0;
2449:
+2450: cdef lyapunov_fun(self, double t, double [:] sig, spline):
static PyObject *__pyx_f_6pyross_9inference_6SEAIRQ_lyapunov_fun(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, double __pyx_v_t, __Pyx_memviewslice __pyx_v_sig, PyObject *__pyx_v_spline) {
__Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_e = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_a = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
PyObject *__pyx_v_q = NULL;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lyapunov_fun", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.lyapunov_fun", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_e, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_a, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__Pyx_XDECREF(__pyx_v_q);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2451: cdef:
2452: double [:] x, s, e, a, Ia, Is, Q
+2453: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2454: x = spline(t)
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_spline); __pyx_t_4 = __pyx_v_spline; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2454, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2454, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_x = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2455: s = x[0:M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2455, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2456: e = x[M:2*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2456, __pyx_L1_error)
}
__pyx_v_e = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2457: a = x[2*M:3*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2457, __pyx_L1_error)
}
__pyx_v_a = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2458: Ia = x[3*M:4*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2458, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2459: Is = x[4*M:5*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(4 * __pyx_v_M),
(5 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2459, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2460: q = x[5*M:6*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(5 * __pyx_v_M),
(6 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2460, __pyx_L1_error)
}
__pyx_t_2 = __pyx_memoryview_fromslice(__pyx_t_6, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2460, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
__pyx_v_q = __pyx_t_2;
__pyx_t_2 = 0;
+2461: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2461, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2461, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2461, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_l = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2462: self.fill_lambdas(a, Ia, Is, l)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2462, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2463: self.jacobian(s, l)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2463, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2464: self.noise_correlation(s, e, a, Ia, Is, q, l)
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_q, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2464, __pyx_L1_error) __pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_t_6, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2464, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2465: self.compute_dsigdt(sig)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.compute_dsigdt(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sig); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2466:
+2467: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t, contactMatrix,
static PyObject *__pyx_f_6pyross_9inference_6SEAIRQ_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, PyObject *__pyx_v_contactMatrix, struct __pyx_opt_args_6pyross_9inference_6SEAIRQ_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_e, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_a, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__Pyx_XDECREF(__pyx_v_q);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_6SEAIRQ_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+2468: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_e = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_a = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
PyObject *__pyx_v_q = NULL;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
2469: cdef:
2470: double [:] s, e, a, Ia, Is, Q
+2471: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2472: s = x[0:M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2472, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2473: e = x[M:2*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2473, __pyx_L1_error)
}
__pyx_v_e = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2474: a = x[2*M:3*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2474, __pyx_L1_error)
}
__pyx_v_a = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2475: Ia = x[3*M:4*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2475, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2476: Is = x[4*M:5*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(4 * __pyx_v_M),
(5 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2476, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2477: q = x[5*M:6*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(5 * __pyx_v_M),
(6 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2477, __pyx_L1_error)
}
__pyx_t_4 = __pyx_memoryview_fromslice(__pyx_t_2, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2477, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
__pyx_v_q = __pyx_t_4;
__pyx_t_4 = 0;
+2478: self.CM = contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_contactMatrix); __pyx_t_6 = __pyx_v_contactMatrix; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2478, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2478, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+2479: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2480: self.fill_lambdas(a, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2480, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2481: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2481, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2482: self.noise_correlation(s, e, a, Ia, Is, q, l)
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_q, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2482, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_t_2, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2482, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2483: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2483, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2484: self.jacobian(s, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2484, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
2485:
+2486: cdef fill_lambdas(self, double [:] a, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_6SEAIRQ_fill_lambdas(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2487: cdef:
+2488: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 2488, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+2489: double [:] fsa=self.fsa, beta=self.beta, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2489, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2489, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2489, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2490: Py_ssize_t m, n, M=self.M
__pyx_t_3 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_3;
+2491: for m in range(M):
__pyx_t_3 = __pyx_v_M;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_m = __pyx_t_5;
+2492: for n in range(M):
__pyx_t_6 = __pyx_v_M;
__pyx_t_7 = __pyx_t_6;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_n = __pyx_t_8;
+2493: l[m] += beta[m]*CM[m,n]*(Ia[n]+a[n]+fsa[n]*Is[n])/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_n;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_17 * __pyx_v_l.strides[0]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * (((*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_13 * __pyx_v_a.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_14 * __pyx_v_fsa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_15 * __pyx_v_Is.strides[0]) )))))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_16 * __pyx_v_fi.strides[0]) ))));
}
}
2494:
+2495: cdef jacobian(self, double [:] s, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_6SEAIRQ_jacobian(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_138);
__Pyx_XDECREF(__pyx_t_139);
__Pyx_XDECREF(__pyx_t_140);
__Pyx_XDECREF(__pyx_t_141);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2496: cdef:
+2497: Py_ssize_t m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+2498: double [:] gE=self.gE, gA=self.gA, gIa=self.gIa, gIs=self.gIs, fsa=self.fsa
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2498, __pyx_L1_error) __pyx_v_gE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gA), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2498, __pyx_L1_error) __pyx_v_gA = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2498, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2498, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2498, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2499: double [:] tE=self.tE, tA=self.tE, tIa=self.tIa, tIs=self.tIs, beta=self.beta
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2499, __pyx_L1_error) __pyx_v_tE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2499, __pyx_L1_error) __pyx_v_tA = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2499, __pyx_L1_error) __pyx_v_tIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2499, __pyx_L1_error) __pyx_v_tIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2499, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2500: double [:] alpha=self.alpha, balpha=1-self.alpha, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2500, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2500, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2500, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2501: double [:, :, :, :] J = self.J
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 2501, __pyx_L1_error) __pyx_v_J = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+2502: double [:, :] CM=self.CM
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2502, __pyx_L1_error) __pyx_v_CM = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+2503: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_6 = __pyx_t_1;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_m = __pyx_t_7;
+2504: J[0, m, 0, m] = -l[m]
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_9 * __pyx_v_J.strides[0]) ) + __pyx_t_10 * __pyx_v_J.strides[1]) ) + __pyx_t_11 * __pyx_v_J.strides[2]) ) + __pyx_t_12 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_8 * __pyx_v_l.strides[0]) ))));
+2505: J[1, m, 0, m] = l[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = 1;
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = 0;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_14 * __pyx_v_J.strides[0]) ) + __pyx_t_15 * __pyx_v_J.strides[1]) ) + __pyx_t_16 * __pyx_v_J.strides[2]) ) + __pyx_t_17 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_13 * __pyx_v_l.strides[0]) )));
+2506: J[1, m, 1, m] = - gE[m] - tE[m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = 1;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = 1;
__pyx_t_23 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_20 * __pyx_v_J.strides[0]) ) + __pyx_t_21 * __pyx_v_J.strides[1]) ) + __pyx_t_22 * __pyx_v_J.strides[2]) ) + __pyx_t_23 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_18 * __pyx_v_gE.strides[0]) )))) - (*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_19 * __pyx_v_tE.strides[0]) ))));
+2507: J[2, m, 1, m] = gE[m]
__pyx_t_24 = __pyx_v_m;
__pyx_t_25 = 2;
__pyx_t_26 = __pyx_v_m;
__pyx_t_27 = 1;
__pyx_t_28 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_25 * __pyx_v_J.strides[0]) ) + __pyx_t_26 * __pyx_v_J.strides[1]) ) + __pyx_t_27 * __pyx_v_J.strides[2]) ) + __pyx_t_28 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_24 * __pyx_v_gE.strides[0]) )));
+2508: J[2, m, 2, m] = - gA[m] - tA[m]
__pyx_t_29 = __pyx_v_m;
__pyx_t_30 = __pyx_v_m;
__pyx_t_31 = 2;
__pyx_t_32 = __pyx_v_m;
__pyx_t_33 = 2;
__pyx_t_34 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_31 * __pyx_v_J.strides[0]) ) + __pyx_t_32 * __pyx_v_J.strides[1]) ) + __pyx_t_33 * __pyx_v_J.strides[2]) ) + __pyx_t_34 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_29 * __pyx_v_gA.strides[0]) )))) - (*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_30 * __pyx_v_tA.strides[0]) ))));
+2509: J[3, m, 2, m] = alpha[m]*gA[m]
__pyx_t_35 = __pyx_v_m;
__pyx_t_36 = __pyx_v_m;
__pyx_t_37 = 3;
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = 2;
__pyx_t_40 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_37 * __pyx_v_J.strides[0]) ) + __pyx_t_38 * __pyx_v_J.strides[1]) ) + __pyx_t_39 * __pyx_v_J.strides[2]) ) + __pyx_t_40 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_35 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_36 * __pyx_v_gA.strides[0]) ))));
+2510: J[3, m, 3, m] = - gIa[m] - tIa[m]
__pyx_t_41 = __pyx_v_m;
__pyx_t_42 = __pyx_v_m;
__pyx_t_43 = 3;
__pyx_t_44 = __pyx_v_m;
__pyx_t_45 = 3;
__pyx_t_46 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_43 * __pyx_v_J.strides[0]) ) + __pyx_t_44 * __pyx_v_J.strides[1]) ) + __pyx_t_45 * __pyx_v_J.strides[2]) ) + __pyx_t_46 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_41 * __pyx_v_gIa.strides[0]) )))) - (*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_42 * __pyx_v_tIa.strides[0]) ))));
+2511: J[4, m, 2, m] = balpha[m]*gA[m]
__pyx_t_47 = __pyx_v_m;
__pyx_t_48 = __pyx_v_m;
__pyx_t_49 = 4;
__pyx_t_50 = __pyx_v_m;
__pyx_t_51 = 2;
__pyx_t_52 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_49 * __pyx_v_J.strides[0]) ) + __pyx_t_50 * __pyx_v_J.strides[1]) ) + __pyx_t_51 * __pyx_v_J.strides[2]) ) + __pyx_t_52 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_47 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_48 * __pyx_v_gA.strides[0]) ))));
+2512: J[4, m, 4, m] = -gIs[m] - tIs[m]
__pyx_t_53 = __pyx_v_m;
__pyx_t_54 = __pyx_v_m;
__pyx_t_55 = 4;
__pyx_t_56 = __pyx_v_m;
__pyx_t_57 = 4;
__pyx_t_58 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_55 * __pyx_v_J.strides[0]) ) + __pyx_t_56 * __pyx_v_J.strides[1]) ) + __pyx_t_57 * __pyx_v_J.strides[2]) ) + __pyx_t_58 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_53 * __pyx_v_gIs.strides[0]) )))) - (*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_54 * __pyx_v_tIs.strides[0]) ))));
+2513: J[5, m, 1, m] = tE[m]
__pyx_t_59 = __pyx_v_m;
__pyx_t_60 = 5;
__pyx_t_61 = __pyx_v_m;
__pyx_t_62 = 1;
__pyx_t_63 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_60 * __pyx_v_J.strides[0]) ) + __pyx_t_61 * __pyx_v_J.strides[1]) ) + __pyx_t_62 * __pyx_v_J.strides[2]) ) + __pyx_t_63 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_59 * __pyx_v_tE.strides[0]) )));
+2514: J[5, m, 2, m] = tA[m]
__pyx_t_64 = __pyx_v_m;
__pyx_t_65 = 5;
__pyx_t_66 = __pyx_v_m;
__pyx_t_67 = 2;
__pyx_t_68 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_65 * __pyx_v_J.strides[0]) ) + __pyx_t_66 * __pyx_v_J.strides[1]) ) + __pyx_t_67 * __pyx_v_J.strides[2]) ) + __pyx_t_68 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_64 * __pyx_v_tA.strides[0]) )));
+2515: J[5, m, 3, m] = tIa[m]
__pyx_t_69 = __pyx_v_m;
__pyx_t_70 = 5;
__pyx_t_71 = __pyx_v_m;
__pyx_t_72 = 3;
__pyx_t_73 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_70 * __pyx_v_J.strides[0]) ) + __pyx_t_71 * __pyx_v_J.strides[1]) ) + __pyx_t_72 * __pyx_v_J.strides[2]) ) + __pyx_t_73 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_69 * __pyx_v_tIa.strides[0]) )));
+2516: J[5, m, 4, m] = tIs[m]
__pyx_t_74 = __pyx_v_m;
__pyx_t_75 = 5;
__pyx_t_76 = __pyx_v_m;
__pyx_t_77 = 4;
__pyx_t_78 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_75 * __pyx_v_J.strides[0]) ) + __pyx_t_76 * __pyx_v_J.strides[1]) ) + __pyx_t_77 * __pyx_v_J.strides[2]) ) + __pyx_t_78 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_74 * __pyx_v_tIs.strides[0]) )));
+2517: for n in range(M):
__pyx_t_79 = __pyx_v_M;
__pyx_t_80 = __pyx_t_79;
for (__pyx_t_81 = 0; __pyx_t_81 < __pyx_t_80; __pyx_t_81+=1) {
__pyx_v_n = __pyx_t_81;
+2518: J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_82 = __pyx_v_m;
__pyx_t_83 = __pyx_v_m;
__pyx_t_84 = __pyx_v_m;
__pyx_t_85 = __pyx_v_n;
__pyx_t_86 = __pyx_v_n;
__pyx_t_87 = 0;
__pyx_t_88 = __pyx_v_m;
__pyx_t_89 = 2;
__pyx_t_90 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_87 * __pyx_v_J.strides[0]) ) + __pyx_t_88 * __pyx_v_J.strides[1]) ) + __pyx_t_89 * __pyx_v_J.strides[2]) ) + __pyx_t_90 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_82 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_83 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_84 * __pyx_v_CM.strides[0]) ) + __pyx_t_85 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_86 * __pyx_v_fi.strides[0]) ))));
+2519: J[0, m, 3, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_91 = __pyx_v_m;
__pyx_t_92 = __pyx_v_m;
__pyx_t_93 = __pyx_v_m;
__pyx_t_94 = __pyx_v_n;
__pyx_t_95 = __pyx_v_n;
__pyx_t_96 = 0;
__pyx_t_97 = __pyx_v_m;
__pyx_t_98 = 3;
__pyx_t_99 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_96 * __pyx_v_J.strides[0]) ) + __pyx_t_97 * __pyx_v_J.strides[1]) ) + __pyx_t_98 * __pyx_v_J.strides[2]) ) + __pyx_t_99 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_91 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_92 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_93 * __pyx_v_CM.strides[0]) ) + __pyx_t_94 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_95 * __pyx_v_fi.strides[0]) ))));
+2520: J[0, m, 4, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_100 = __pyx_v_m;
__pyx_t_101 = __pyx_v_m;
__pyx_t_102 = __pyx_v_m;
__pyx_t_103 = __pyx_v_n;
__pyx_t_104 = __pyx_v_n;
__pyx_t_105 = __pyx_v_n;
__pyx_t_106 = 0;
__pyx_t_107 = __pyx_v_m;
__pyx_t_108 = 4;
__pyx_t_109 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_106 * __pyx_v_J.strides[0]) ) + __pyx_t_107 * __pyx_v_J.strides[1]) ) + __pyx_t_108 * __pyx_v_J.strides[2]) ) + __pyx_t_109 * __pyx_v_J.strides[3]) )) = (((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_100 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_101 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_102 * __pyx_v_CM.strides[0]) ) + __pyx_t_103 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_104 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_105 * __pyx_v_fi.strides[0]) ))));
+2521: J[1, m, 2, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_110 = __pyx_v_m;
__pyx_t_111 = __pyx_v_m;
__pyx_t_112 = __pyx_v_m;
__pyx_t_113 = __pyx_v_n;
__pyx_t_114 = __pyx_v_n;
__pyx_t_115 = 1;
__pyx_t_116 = __pyx_v_m;
__pyx_t_117 = 2;
__pyx_t_118 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_115 * __pyx_v_J.strides[0]) ) + __pyx_t_116 * __pyx_v_J.strides[1]) ) + __pyx_t_117 * __pyx_v_J.strides[2]) ) + __pyx_t_118 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_110 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_111 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_112 * __pyx_v_CM.strides[0]) ) + __pyx_t_113 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_114 * __pyx_v_fi.strides[0]) ))));
+2522: J[1, m, 3, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_119 = __pyx_v_m;
__pyx_t_120 = __pyx_v_m;
__pyx_t_121 = __pyx_v_m;
__pyx_t_122 = __pyx_v_n;
__pyx_t_123 = __pyx_v_n;
__pyx_t_124 = 1;
__pyx_t_125 = __pyx_v_m;
__pyx_t_126 = 3;
__pyx_t_127 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_124 * __pyx_v_J.strides[0]) ) + __pyx_t_125 * __pyx_v_J.strides[1]) ) + __pyx_t_126 * __pyx_v_J.strides[2]) ) + __pyx_t_127 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_119 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_120 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_121 * __pyx_v_CM.strides[0]) ) + __pyx_t_122 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_123 * __pyx_v_fi.strides[0]) ))));
+2523: J[1, m, 4, n] = s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_128 = __pyx_v_m;
__pyx_t_129 = __pyx_v_m;
__pyx_t_130 = __pyx_v_m;
__pyx_t_131 = __pyx_v_n;
__pyx_t_132 = __pyx_v_n;
__pyx_t_133 = __pyx_v_n;
__pyx_t_134 = 1;
__pyx_t_135 = __pyx_v_m;
__pyx_t_136 = 4;
__pyx_t_137 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_134 * __pyx_v_J.strides[0]) ) + __pyx_t_135 * __pyx_v_J.strides[1]) ) + __pyx_t_136 * __pyx_v_J.strides[2]) ) + __pyx_t_137 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_128 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_129 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_130 * __pyx_v_CM.strides[0]) ) + __pyx_t_131 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_132 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_133 * __pyx_v_fi.strides[0]) ))));
}
}
+2524: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_138 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_138)) __PYX_ERR(0, 2524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_138); __pyx_t_139 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_139)) __PYX_ERR(0, 2524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_139); __pyx_t_140 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_140)) __PYX_ERR(0, 2524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_140); __pyx_t_141 = PyTuple_New(2); if (unlikely(!__pyx_t_141)) __PYX_ERR(0, 2524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_141); __Pyx_GIVEREF(__pyx_t_139); PyTuple_SET_ITEM(__pyx_t_141, 0, __pyx_t_139); __Pyx_GIVEREF(__pyx_t_140); PyTuple_SET_ITEM(__pyx_t_141, 1, __pyx_t_140); __pyx_t_139 = 0; __pyx_t_140 = 0; __pyx_t_140 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_138))) { __pyx_t_140 = PyMethod_GET_SELF(__pyx_t_138); if (likely(__pyx_t_140)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_138); __Pyx_INCREF(__pyx_t_140); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_138, function); } } __pyx_t_3 = (__pyx_t_140) ? __Pyx_PyObject_Call2Args(__pyx_t_138, __pyx_t_140, __pyx_t_141) : __Pyx_PyObject_CallOneArg(__pyx_t_138, __pyx_t_141); __Pyx_XDECREF(__pyx_t_140); __pyx_t_140 = 0; __Pyx_DECREF(__pyx_t_141); __pyx_t_141 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2524, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_138); __pyx_t_138 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2524, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
2525:
+2526: cdef noise_correlation(self, double [:] s, double [:] e, double [:] a, double [:] Ia, double [:] Is, double [:] q, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_6SEAIRQ_noise_correlation(struct __pyx_obj_6pyross_9inference_SEAIRQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_e, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_q, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_tIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__Pyx_XDECREF(__pyx_t_113);
__Pyx_XDECREF(__pyx_t_114);
__Pyx_XDECREF(__pyx_t_115);
__Pyx_XDECREF(__pyx_t_116);
__Pyx_AddTraceback("pyross.inference.SEAIRQ.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_tIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2527: cdef:
+2528: Py_ssize_t m, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2529: double [:] beta=self.beta, gIa=self.gIa, gIs=self.gIs, gE=self.gE, gA=self.gA
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2529, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2529, __pyx_L1_error) __pyx_v_gIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2529, __pyx_L1_error) __pyx_v_gIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2529, __pyx_L1_error) __pyx_v_gE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gA), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2529, __pyx_L1_error) __pyx_v_gA = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2530: double [:] tE=self.tE, tA=self.tE, tIa=self.tIa, tIs=self.tIs
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2530, __pyx_L1_error) __pyx_v_tE = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2530, __pyx_L1_error) __pyx_v_tA = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2530, __pyx_L1_error) __pyx_v_tIa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->tIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2530, __pyx_L1_error) __pyx_v_tIs = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2531: double [:] alpha=self.alpha, balpha=1-self.alpha
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2531, __pyx_L1_error) __pyx_v_alpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_3 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2531, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_balpha = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2532: double [:, :, :, :] B = self.B
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 2532, __pyx_L1_error) __pyx_v_B = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+2533: for m in range(M): # only fill in the upper triangular form
__pyx_t_1 = __pyx_v_M;
__pyx_t_5 = __pyx_t_1;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_m = __pyx_t_6;
+2534: B[0, m, 0, m] = l[m]*s[m]
__pyx_t_7 = __pyx_v_m;
__pyx_t_8 = __pyx_v_m;
__pyx_t_9 = 0;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = 0;
__pyx_t_12 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_9 * __pyx_v_B.strides[0]) ) + __pyx_t_10 * __pyx_v_B.strides[1]) ) + __pyx_t_11 * __pyx_v_B.strides[2]) ) + __pyx_t_12 * __pyx_v_B.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_7 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_8 * __pyx_v_s.strides[0]) ))));
+2535: B[0, m, 1, m] = - l[m]*s[m]
__pyx_t_13 = __pyx_v_m;
__pyx_t_14 = __pyx_v_m;
__pyx_t_15 = 0;
__pyx_t_16 = __pyx_v_m;
__pyx_t_17 = 1;
__pyx_t_18 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_15 * __pyx_v_B.strides[0]) ) + __pyx_t_16 * __pyx_v_B.strides[1]) ) + __pyx_t_17 * __pyx_v_B.strides[2]) ) + __pyx_t_18 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_13 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_14 * __pyx_v_s.strides[0]) ))));
+2536: B[1, m, 1, m] = l[m]*s[m] + (gE[m]+tE[m])*e[m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_m;
__pyx_t_23 = __pyx_v_m;
__pyx_t_24 = 1;
__pyx_t_25 = __pyx_v_m;
__pyx_t_26 = 1;
__pyx_t_27 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_24 * __pyx_v_B.strides[0]) ) + __pyx_t_25 * __pyx_v_B.strides[1]) ) + __pyx_t_26 * __pyx_v_B.strides[2]) ) + __pyx_t_27 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_19 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_20 * __pyx_v_s.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_21 * __pyx_v_gE.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_22 * __pyx_v_tE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_23 * __pyx_v_e.strides[0]) )))));
+2537: B[1, m, 2, m] = -gE[m]*e[m]
__pyx_t_28 = __pyx_v_m;
__pyx_t_29 = __pyx_v_m;
__pyx_t_30 = 1;
__pyx_t_31 = __pyx_v_m;
__pyx_t_32 = 2;
__pyx_t_33 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_30 * __pyx_v_B.strides[0]) ) + __pyx_t_31 * __pyx_v_B.strides[1]) ) + __pyx_t_32 * __pyx_v_B.strides[2]) ) + __pyx_t_33 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_28 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_29 * __pyx_v_e.strides[0]) ))));
+2538: B[2, m, 2, m] = gE[m]*e[m]+(gA[m]+tA[m])*a[m]
__pyx_t_34 = __pyx_v_m;
__pyx_t_35 = __pyx_v_m;
__pyx_t_36 = __pyx_v_m;
__pyx_t_37 = __pyx_v_m;
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = 2;
__pyx_t_40 = __pyx_v_m;
__pyx_t_41 = 2;
__pyx_t_42 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_39 * __pyx_v_B.strides[0]) ) + __pyx_t_40 * __pyx_v_B.strides[1]) ) + __pyx_t_41 * __pyx_v_B.strides[2]) ) + __pyx_t_42 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_34 * __pyx_v_gE.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_35 * __pyx_v_e.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_36 * __pyx_v_gA.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_37 * __pyx_v_tA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_38 * __pyx_v_a.strides[0]) )))));
+2539: B[2, m, 3, m] = -alpha[m]*gA[m]*a[m]
__pyx_t_43 = __pyx_v_m;
__pyx_t_44 = __pyx_v_m;
__pyx_t_45 = __pyx_v_m;
__pyx_t_46 = 2;
__pyx_t_47 = __pyx_v_m;
__pyx_t_48 = 3;
__pyx_t_49 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_46 * __pyx_v_B.strides[0]) ) + __pyx_t_47 * __pyx_v_B.strides[1]) ) + __pyx_t_48 * __pyx_v_B.strides[2]) ) + __pyx_t_49 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_43 * __pyx_v_alpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_44 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_45 * __pyx_v_a.strides[0]) ))));
+2540: B[2, m, 4, m] = -balpha[m]*gA[m]*a[m]
__pyx_t_50 = __pyx_v_m;
__pyx_t_51 = __pyx_v_m;
__pyx_t_52 = __pyx_v_m;
__pyx_t_53 = 2;
__pyx_t_54 = __pyx_v_m;
__pyx_t_55 = 4;
__pyx_t_56 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_53 * __pyx_v_B.strides[0]) ) + __pyx_t_54 * __pyx_v_B.strides[1]) ) + __pyx_t_55 * __pyx_v_B.strides[2]) ) + __pyx_t_56 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_50 * __pyx_v_balpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_51 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_52 * __pyx_v_a.strides[0]) ))));
+2541: B[3, m, 3, m] = alpha[m]*gA[m]*a[m]+(gIa[m]+tIa[m])*Ia[m]
__pyx_t_57 = __pyx_v_m;
__pyx_t_58 = __pyx_v_m;
__pyx_t_59 = __pyx_v_m;
__pyx_t_60 = __pyx_v_m;
__pyx_t_61 = __pyx_v_m;
__pyx_t_62 = __pyx_v_m;
__pyx_t_63 = 3;
__pyx_t_64 = __pyx_v_m;
__pyx_t_65 = 3;
__pyx_t_66 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_63 * __pyx_v_B.strides[0]) ) + __pyx_t_64 * __pyx_v_B.strides[1]) ) + __pyx_t_65 * __pyx_v_B.strides[2]) ) + __pyx_t_66 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_57 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_58 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_59 * __pyx_v_a.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_60 * __pyx_v_gIa.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_61 * __pyx_v_tIa.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_62 * __pyx_v_Ia.strides[0]) )))));
+2542: B[4, m, 4, m] = balpha[m]*gA[m]*a[m] + (gIs[m]+tIs[m])*Is[m]
__pyx_t_67 = __pyx_v_m;
__pyx_t_68 = __pyx_v_m;
__pyx_t_69 = __pyx_v_m;
__pyx_t_70 = __pyx_v_m;
__pyx_t_71 = __pyx_v_m;
__pyx_t_72 = __pyx_v_m;
__pyx_t_73 = 4;
__pyx_t_74 = __pyx_v_m;
__pyx_t_75 = 4;
__pyx_t_76 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_73 * __pyx_v_B.strides[0]) ) + __pyx_t_74 * __pyx_v_B.strides[1]) ) + __pyx_t_75 * __pyx_v_B.strides[2]) ) + __pyx_t_76 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_67 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_68 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_69 * __pyx_v_a.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_70 * __pyx_v_gIs.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_71 * __pyx_v_tIs.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_72 * __pyx_v_Is.strides[0]) )))));
+2543: B[1, m, 5, m] = -tE[m]*e[m]
__pyx_t_77 = __pyx_v_m;
__pyx_t_78 = __pyx_v_m;
__pyx_t_79 = 1;
__pyx_t_80 = __pyx_v_m;
__pyx_t_81 = 5;
__pyx_t_82 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_79 * __pyx_v_B.strides[0]) ) + __pyx_t_80 * __pyx_v_B.strides[1]) ) + __pyx_t_81 * __pyx_v_B.strides[2]) ) + __pyx_t_82 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_77 * __pyx_v_tE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_78 * __pyx_v_e.strides[0]) ))));
+2544: B[2, m, 5, m] = -tA[m]*a[m]
__pyx_t_83 = __pyx_v_m;
__pyx_t_84 = __pyx_v_m;
__pyx_t_85 = 2;
__pyx_t_86 = __pyx_v_m;
__pyx_t_87 = 5;
__pyx_t_88 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_85 * __pyx_v_B.strides[0]) ) + __pyx_t_86 * __pyx_v_B.strides[1]) ) + __pyx_t_87 * __pyx_v_B.strides[2]) ) + __pyx_t_88 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_83 * __pyx_v_tA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_84 * __pyx_v_a.strides[0]) ))));
+2545: B[3, m, 5, m] = -tIa[m]*Ia[m]
__pyx_t_89 = __pyx_v_m;
__pyx_t_90 = __pyx_v_m;
__pyx_t_91 = 3;
__pyx_t_92 = __pyx_v_m;
__pyx_t_93 = 5;
__pyx_t_94 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_91 * __pyx_v_B.strides[0]) ) + __pyx_t_92 * __pyx_v_B.strides[1]) ) + __pyx_t_93 * __pyx_v_B.strides[2]) ) + __pyx_t_94 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_89 * __pyx_v_tIa.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_90 * __pyx_v_Ia.strides[0]) ))));
+2546: B[4, m, 5, m] = -tIs[m]*Is[m]
__pyx_t_95 = __pyx_v_m;
__pyx_t_96 = __pyx_v_m;
__pyx_t_97 = 4;
__pyx_t_98 = __pyx_v_m;
__pyx_t_99 = 5;
__pyx_t_100 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_97 * __pyx_v_B.strides[0]) ) + __pyx_t_98 * __pyx_v_B.strides[1]) ) + __pyx_t_99 * __pyx_v_B.strides[2]) ) + __pyx_t_100 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_95 * __pyx_v_tIs.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_96 * __pyx_v_Is.strides[0]) ))));
+2547: B[5, m, 5, m] = tE[m]*e[m]+tA[m]*a[m]+tIa[m]*Ia[m]+tIs[m]*Is[m]
__pyx_t_101 = __pyx_v_m;
__pyx_t_102 = __pyx_v_m;
__pyx_t_103 = __pyx_v_m;
__pyx_t_104 = __pyx_v_m;
__pyx_t_105 = __pyx_v_m;
__pyx_t_106 = __pyx_v_m;
__pyx_t_107 = __pyx_v_m;
__pyx_t_108 = __pyx_v_m;
__pyx_t_109 = 5;
__pyx_t_110 = __pyx_v_m;
__pyx_t_111 = 5;
__pyx_t_112 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_109 * __pyx_v_B.strides[0]) ) + __pyx_t_110 * __pyx_v_B.strides[1]) ) + __pyx_t_111 * __pyx_v_B.strides[2]) ) + __pyx_t_112 * __pyx_v_B.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_tE.data + __pyx_t_101 * __pyx_v_tE.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_102 * __pyx_v_e.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_tA.data + __pyx_t_103 * __pyx_v_tA.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_104 * __pyx_v_a.strides[0]) ))))) + ((*((double *) ( /* dim=0 */ (__pyx_v_tIa.data + __pyx_t_105 * __pyx_v_tIa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_106 * __pyx_v_Ia.strides[0]) ))))) + ((*((double *) ( /* dim=0 */ (__pyx_v_tIs.data + __pyx_t_107 * __pyx_v_tIs.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_108 * __pyx_v_Is.strides[0]) )))));
}
+2548: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_113 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_113)) __PYX_ERR(0, 2548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_113); __pyx_t_114 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_114)) __PYX_ERR(0, 2548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_114); __pyx_t_115 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_115)) __PYX_ERR(0, 2548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_115); __pyx_t_116 = PyTuple_New(2); if (unlikely(!__pyx_t_116)) __PYX_ERR(0, 2548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_116); __Pyx_GIVEREF(__pyx_t_114); PyTuple_SET_ITEM(__pyx_t_116, 0, __pyx_t_114); __Pyx_GIVEREF(__pyx_t_115); PyTuple_SET_ITEM(__pyx_t_116, 1, __pyx_t_115); __pyx_t_114 = 0; __pyx_t_115 = 0; __pyx_t_115 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_113))) { __pyx_t_115 = PyMethod_GET_SELF(__pyx_t_113); if (likely(__pyx_t_115)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_113); __Pyx_INCREF(__pyx_t_115); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_113, function); } } __pyx_t_3 = (__pyx_t_115) ? __Pyx_PyObject_Call2Args(__pyx_t_113, __pyx_t_115, __pyx_t_116) : __Pyx_PyObject_CallOneArg(__pyx_t_113, __pyx_t_116); __Pyx_XDECREF(__pyx_t_115); __pyx_t_115 = 0; __Pyx_DECREF(__pyx_t_116); __pyx_t_116 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_113); __pyx_t_113 = 0; __pyx_t_113 = PyTuple_New(2); if (unlikely(!__pyx_t_113)) __PYX_ERR(0, 2548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_113); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_113, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_113, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_116 = __Pyx_PyObject_GetItem(__pyx_t_3, __pyx_t_113); if (unlikely(!__pyx_t_116)) __PYX_ERR(0, 2548, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_116); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_113); __pyx_t_113 = 0; if (!(likely(((__pyx_t_116) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_116, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2548, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_116); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_116); __pyx_t_116 = 0;
2549:
2550:
2551: @cython.wraparound(False)
2552: @cython.boundscheck(False)
2553: @cython.cdivision(True)
2554: @cython.nonecheck(False)
+2555: cdef class SEAIRQ_testing(SIR_type):
struct __pyx_obj_6pyross_9inference_SEAIRQ_testing {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *gE;
PyArrayObject *gA;
PyArrayObject *ars;
PyArrayObject *kapE;
PyObject *testRate;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice);
};
static struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *__pyx_vtabptr_6pyross_9inference_SEAIRQ_testing;
2556: """
2557: Susceptible, Exposed, Asymptomatic and infected, Infected, Removed, Quarantined (SEAIRQ)
2558: Ia: asymptomatic
2559: Is: symptomatic
2560: A : Asymptomatic and infectious
2561:
2562: * Ia: asymptomatic
2563: * Is: symptomatic
2564: * E: exposed
2565: * A: asymptomatic and infectious
2566: * Q: quarantined
2567:
2568: To initialise the SEAIRQ class,
2569:
2570: Parameters
2571: ----------
2572: parameters: dict
2573: Contains the following keys:
2574:
2575: alpha: float or np.array(M)
2576: Fraction of infected who are asymptomatic.
2577: beta: float
2578: Rate of spread of infection.
2579: gIa: float
2580: Rate of removal from asymptomatic individuals.
2581: gIs: float
2582: Rate of removal from symptomatic individuals.
2583: gE: float
2584: rate of removal from exposed individuals.
2585: gA: float
2586: rate of removal from activated individuals.
2587: fsa: float
2588: fraction by which symptomatic individuals self isolate.
2589: ars : float
2590: fraction of population admissible for random and symptomatic tests
2591: kapE : float
2592: fraction of positive tests for exposed individuals
2593: testRate: python function
2594: number of tests per day and age group
2595: M: int
2596: Number of age groups.
2597: fi: float numpy.array
2598: Fraction of each age group.
2599: N: int
2600: Total population.
2601: steps: int
2602: The number of internal integration steps performed between the observed points (not used in tangent space inference).
2603: The minimal is 4, as required by the cubic spline fit used for interpolation.
2604: For robustness, set steps to be large, det_method='LSODA', lyapunov_method='LSODA'.
2605: For speed, set steps to be 4, det_method='RK2', lyapunov_method='euler'.
2606: For a combination of the two, choose something in between.
2607: det_method: str, optional
2608: The integration method used for deterministic integration.
2609: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2610: lyapunov_method: str, optional
2611: The integration method used for the integration of the Lyapunov equation for the covariance.
2612: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2613: """
2614:
2615: cdef:
+2616: readonly np.ndarray gE, gA, ars, kapE
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_2gE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_2gE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_2gE___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_2gE___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gE));
__pyx_r = ((PyObject *)__pyx_v_self->gE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_2gA_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_2gA_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_2gA___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_2gA___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->gA));
__pyx_r = ((PyObject *)__pyx_v_self->gA);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_3ars_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_3ars_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_3ars___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_3ars___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->ars));
__pyx_r = ((PyObject *)__pyx_v_self->ars);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_4kapE_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_4kapE_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_4kapE___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_4kapE___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->kapE));
__pyx_r = ((PyObject *)__pyx_v_self->kapE);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2617: readonly object testRate
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_8testRate_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_8testRate_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_8testRate___get__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_8testRate___get__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->testRate);
__pyx_r = __pyx_v_self->testRate;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2618:
+2619: def __init__(self, parameters, testRate, M, fi, N, steps, det_method='LSODA', lyapunov_method='LSODA'):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_14SEAIRQ_testing_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_14SEAIRQ_testing_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_testRate = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_N = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parameters,&__pyx_n_s_testRate,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_N,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
values[6] = ((PyObject *)__pyx_n_u_LSODA);
values[7] = ((PyObject *)__pyx_n_u_LSODA);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_testRate)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 1); __PYX_ERR(0, 2619, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 2); __PYX_ERR(0, 2619, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 3); __PYX_ERR(0, 2619, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 4); __PYX_ERR(0, 2619, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 5); __PYX_ERR(0, 2619, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2619, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_parameters = values[0];
__pyx_v_testRate = values[1];
__pyx_v_M = values[2];
__pyx_v_fi = values[3];
__pyx_v_N = values[4];
__pyx_v_steps = values[5];
__pyx_v_det_method = values[6];
__pyx_v_lyapunov_method = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2619, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing___init__(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), __pyx_v_parameters, __pyx_v_testRate, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_14SEAIRQ_testing___init__(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, PyObject *__pyx_v_parameters, PyObject *__pyx_v_testRate, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_N, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2620: super().__init__(parameters, 6, M, fi, N, steps, det_method, lyapunov_method)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_6, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2620, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_int_6, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2620, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_5 = PyTuple_New(8+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_INCREF(__pyx_int_6); __Pyx_GIVEREF(__pyx_int_6); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_int_6); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_N); __Pyx_GIVEREF(__pyx_v_N); PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_N); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_5, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_5, 7+__pyx_t_4, __pyx_v_lyapunov_method); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2620, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2621: self.testRate=testRate
__Pyx_INCREF(__pyx_v_testRate); __Pyx_GIVEREF(__pyx_v_testRate); __Pyx_GOTREF(__pyx_v_self->testRate); __Pyx_DECREF(__pyx_v_self->testRate); __pyx_v_self->testRate = __pyx_v_testRate;
+2622: self.class_index_dict = {'S':0, 'E':1, 'A':2, 'Ia':3, 'Is':4, 'Q':5}
__pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_S, __pyx_int_0) < 0) __PYX_ERR(0, 2622, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_E, __pyx_int_1) < 0) __PYX_ERR(0, 2622, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_A, __pyx_int_2) < 0) __PYX_ERR(0, 2622, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Ia, __pyx_int_3) < 0) __PYX_ERR(0, 2622, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Is, __pyx_int_4) < 0) __PYX_ERR(0, 2622, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_1, __pyx_n_u_Q, __pyx_int_5) < 0) __PYX_ERR(0, 2622, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
2623:
+2624: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_2infection_indices(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_2infection_indices(CYTHON_UNUSED struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2625: return (1, 2, 3, 4)
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_tuple__36); __pyx_r = __pyx_tuple__36; goto __pyx_L0; /* … */ __pyx_tuple__36 = PyTuple_Pack(4, __pyx_int_1, __pyx_int_2, __pyx_int_3, __pyx_int_4); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(0, 2625, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__36); __Pyx_GIVEREF(__pyx_tuple__36);
2626:
+2627: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_4set_params(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_4set_params(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2628: super().set_params(parameters)
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_set_params); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2628, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2629: self.gE = pyross.utils.age_dep_rates(parameters['gE'], self.M, 'gE')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_gE}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gE); __Pyx_GIVEREF(__pyx_n_u_gE); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_gE); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2629, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gE); __Pyx_DECREF(((PyObject *)__pyx_v_self->gE)); __pyx_v_self->gE = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2630: self.gA = pyross.utils.age_dep_rates(parameters['gA'], self.M, 'gA')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_gA); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gA}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_t_7, __pyx_t_4, __pyx_n_u_gA}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_gA); __Pyx_GIVEREF(__pyx_n_u_gA); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_n_u_gA); __pyx_t_7 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2630, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->gA); __Pyx_DECREF(((PyObject *)__pyx_v_self->gA)); __pyx_v_self->gA = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2631: self.ars = pyross.utils.age_dep_rates(parameters['ars'], self.M, 'ars')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_ars); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_ars}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_5, __pyx_t_4, __pyx_n_u_ars}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_ars); __Pyx_GIVEREF(__pyx_n_u_ars); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_n_u_ars); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2631, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->ars); __Pyx_DECREF(((PyObject *)__pyx_v_self->ars)); __pyx_v_self->ars = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2632: self.kapE = pyross.utils.age_dep_rates(parameters['kapE'], self.M, 'kapE')
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pyross); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Dict_GetItem(__pyx_v_parameters, __pyx_n_u_kapE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_kapE}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[4] = {__pyx_t_5, __pyx_t_3, __pyx_t_4, __pyx_n_u_kapE}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_n_u_kapE); __Pyx_GIVEREF(__pyx_n_u_kapE); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_n_u_kapE); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2632, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->kapE); __Pyx_DECREF(((PyObject *)__pyx_v_self->kapE)); __pyx_v_self->kapE = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
2633:
2634:
+2635: def set_testRate(self, testRate):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_7set_testRate(PyObject *__pyx_v_self, PyObject *__pyx_v_testRate); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_7set_testRate(PyObject *__pyx_v_self, PyObject *__pyx_v_testRate) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_testRate (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_6set_testRate(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), ((PyObject *)__pyx_v_testRate));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_6set_testRate(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, PyObject *__pyx_v_testRate) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_testRate", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2636: self.testRate=testRate
__Pyx_INCREF(__pyx_v_testRate); __Pyx_GIVEREF(__pyx_v_testRate); __Pyx_GOTREF(__pyx_v_self->testRate); __Pyx_DECREF(__pyx_v_self->testRate); __pyx_v_self->testRate = __pyx_v_testRate;
2637:
+2638: def integrate(self, double [:] x0, double t1, double t2, Py_ssize_t steps, model, contactMatrix, method=None, maxNumSteps=100000):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_9integrate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_9integrate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_t1;
double __pyx_v_t2;
Py_ssize_t __pyx_v_steps;
PyObject *__pyx_v_model = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_method = 0;
PyObject *__pyx_v_maxNumSteps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("integrate (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_t1,&__pyx_n_s_t2,&__pyx_n_s_steps,&__pyx_n_s_model,&__pyx_n_s_contactMatrix,&__pyx_n_s_method,&__pyx_n_s_maxNumSteps,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)__pyx_int_100000);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 1); __PYX_ERR(0, 2638, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 2); __PYX_ERR(0, 2638, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 3); __PYX_ERR(0, 2638, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 4); __PYX_ERR(0, 2638, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 5); __PYX_ERR(0, 2638, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxNumSteps);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "integrate") < 0)) __PYX_ERR(0, 2638, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 2638, __pyx_L3_error)
__pyx_v_t1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_t1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2638, __pyx_L3_error)
__pyx_v_t2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2638, __pyx_L3_error)
__pyx_v_steps = __Pyx_PyIndex_AsSsize_t(values[3]); if (unlikely((__pyx_v_steps == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2638, __pyx_L3_error)
__pyx_v_model = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_method = values[6];
__pyx_v_maxNumSteps = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2638, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_8integrate(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), __pyx_v_x0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps, __pyx_v_model, __pyx_v_contactMatrix, __pyx_v_method, __pyx_v_maxNumSteps);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_8integrate(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_t1, double __pyx_v_t2, Py_ssize_t __pyx_v_steps, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_method, PyObject *__pyx_v_maxNumSteps) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("integrate", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2639: model.set_testRate(self.testRate)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_model, __pyx_n_s_set_testRate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_self->testRate) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->testRate); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2639, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2640: return super().integrate(x0, t1, t2, steps, model, contactMatrix, maxNumSteps=maxNumSteps, method=method)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SEAIRQ_testing)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_integrate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5); __Pyx_INCREF(__pyx_v_model); __Pyx_GIVEREF(__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_6, 4, __pyx_v_model); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_6, 5, __pyx_v_contactMatrix); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_maxNumSteps, __pyx_v_maxNumSteps) < 0) __PYX_ERR(0, 2640, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_method, __pyx_v_method) < 0) __PYX_ERR(0, 2640, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2640, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_r = __pyx_t_4; __pyx_t_4 = 0; goto __pyx_L0;
2641:
+2642: def make_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_11make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_11make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_10make_det_model(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_10make_det_model(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_v_det_model = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.make_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_det_model);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2643: det_model = pyross.deterministic.SEAIRQ_testing(parameters, self.M, self.fi*self.N)
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyFloat_FromDouble(__pyx_v_self->__pyx_base.N); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyNumber_Multiply(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3); __pyx_t_1 = 0; __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SEAIRQ_testing), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2643, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_det_model = __pyx_t_3; __pyx_t_3 = 0;
+2644: det_model.set_testRate(self.testRate)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_det_model, __pyx_n_s_set_testRate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_1, __pyx_v_self->testRate) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->testRate); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2644, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2645: return det_model
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_det_model); __pyx_r = __pyx_v_det_model; goto __pyx_L0;
2646:
2647:
+2648: def make_params_dict(self, params=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_13make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_14SEAIRQ_testing_13make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_params = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,0};
PyObject* values[1] = {0};
values[0] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params);
if (value) { values[0] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "make_params_dict") < 0)) __PYX_ERR(0, 2648, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("make_params_dict", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2648, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_14SEAIRQ_testing_12make_params_dict(((struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self), __pyx_v_params);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_14SEAIRQ_testing_12make_params_dict(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, PyObject *__pyx_v_params) {
PyObject *__pyx_v_parameters = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_parameters);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2649: if params is None:
__pyx_t_1 = (__pyx_v_params == Py_None);
__pyx_t_2 = (__pyx_t_1 != 0);
if (__pyx_t_2) {
/* … */
goto __pyx_L3;
}
+2650: parameters = {'alpha':self.alpha,
__pyx_t_3 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2650, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_alpha, ((PyObject *)__pyx_v_self->__pyx_base.alpha)) < 0) __PYX_ERR(0, 2650, __pyx_L1_error)
+2651: 'beta':self.beta,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_beta, ((PyObject *)__pyx_v_self->__pyx_base.beta)) < 0) __PYX_ERR(0, 2650, __pyx_L1_error)
+2652: 'gIa':self.gIa,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIa, ((PyObject *)__pyx_v_self->__pyx_base.gIa)) < 0) __PYX_ERR(0, 2650, __pyx_L1_error)
+2653: 'gIs':self.gIs,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIs, ((PyObject *)__pyx_v_self->__pyx_base.gIs)) < 0) __PYX_ERR(0, 2650, __pyx_L1_error)
+2654: 'gE':self.gE,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gE, ((PyObject *)__pyx_v_self->gE)) < 0) __PYX_ERR(0, 2650, __pyx_L1_error)
+2655: 'gA':self.gA,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gA, ((PyObject *)__pyx_v_self->gA)) < 0) __PYX_ERR(0, 2650, __pyx_L1_error)
+2656: 'fsa': self.fsa,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 2650, __pyx_L1_error)
+2657: 'ars': self.ars,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_ars, ((PyObject *)__pyx_v_self->ars)) < 0) __PYX_ERR(0, 2650, __pyx_L1_error)
+2658: 'kapE': self.kapE
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_kapE, ((PyObject *)__pyx_v_self->kapE)) < 0) __PYX_ERR(0, 2650, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0;
2659: }
2660: else:
+2661: parameters = {'alpha':params[0],
/*else*/ {
__pyx_t_3 = __Pyx_PyDict_NewPresized(9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2661, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2661, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_alpha, __pyx_t_4) < 0) __PYX_ERR(0, 2661, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2662: 'beta':params[1],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2662, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_beta, __pyx_t_4) < 0) __PYX_ERR(0, 2661, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2663: 'gIa':params[2],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2663, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIa, __pyx_t_4) < 0) __PYX_ERR(0, 2661, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2664: 'gIs':params[3],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2664, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gIs, __pyx_t_4) < 0) __PYX_ERR(0, 2661, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2665: 'gE': params[4],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2665, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gE, __pyx_t_4) < 0) __PYX_ERR(0, 2661, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2666: 'gA': params[5],
__pyx_t_4 = __Pyx_GetItemInt(__pyx_v_params, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2666, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_gA, __pyx_t_4) < 0) __PYX_ERR(0, 2661, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2667: 'fsa': self.fsa,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_fsa, ((PyObject *)__pyx_v_self->__pyx_base.fsa)) < 0) __PYX_ERR(0, 2661, __pyx_L1_error)
+2668: 'ars': self.ars,
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_ars, ((PyObject *)__pyx_v_self->ars)) < 0) __PYX_ERR(0, 2661, __pyx_L1_error)
+2669: 'kapE': self.kapE
if (PyDict_SetItem(__pyx_t_3, __pyx_n_u_kapE, ((PyObject *)__pyx_v_self->kapE)) < 0) __PYX_ERR(0, 2661, __pyx_L1_error) __pyx_v_parameters = ((PyObject*)__pyx_t_3); __pyx_t_3 = 0; } __pyx_L3:;
2670: }
+2671: return parameters
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_parameters); __pyx_r = __pyx_v_parameters; goto __pyx_L0;
2672:
+2673: cdef lyapunov_fun(self, double t, double [:] sig, spline):
static PyObject *__pyx_f_6pyross_9inference_14SEAIRQ_testing_lyapunov_fun(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, double __pyx_v_t, __Pyx_memviewslice __pyx_v_sig, PyObject *__pyx_v_spline) {
__Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_e = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_a = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_TR = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
PyObject *__pyx_v_q = NULL;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lyapunov_fun", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.lyapunov_fun", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_e, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_a, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_TR, 1);
__Pyx_XDECREF(__pyx_v_q);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2674: cdef:
2675: double [:] x, s, e, a, Ia, Is, Q, TR
+2676: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2677: x = spline(t)
__pyx_t_3 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_spline); __pyx_t_4 = __pyx_v_spline; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2677, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2677, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_x = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2678: s = x[0:M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2678, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2679: e = x[M:2*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2679, __pyx_L1_error)
}
__pyx_v_e = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2680: a = x[2*M:3*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2680, __pyx_L1_error)
}
__pyx_v_a = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2681: Ia = x[3*M:4*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2681, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2682: Is = x[4*M:5*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(4 * __pyx_v_M),
(5 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2682, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2683: q = x[5*M:6*M]
__pyx_t_6.data = __pyx_v_x.data;
__pyx_t_6.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
__pyx_t_7 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_6,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_7,
(5 * __pyx_v_M),
(6 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2683, __pyx_L1_error)
}
__pyx_t_2 = __pyx_memoryview_fromslice(__pyx_t_6, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2683, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
__pyx_v_q = __pyx_t_2;
__pyx_t_2 = 0;
+2684: TR=self.testRate(t)
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_self->testRate); __pyx_t_3 = __pyx_v_self->testRate; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2684, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2684, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_TR = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2685: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2685, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2685, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2685, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_l = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2686: self.fill_lambdas(a, Ia, Is, l)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2686, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2687: self.jacobian(s, e, a, Ia, Is, q, l, TR)
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_q, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2687, __pyx_L1_error) __pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_t_6, __pyx_v_l, __pyx_v_TR); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2687, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2688: self.noise_correlation(s, e, a, Ia, Is, q, l, TR)
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_q, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2688, __pyx_L1_error) __pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_t_6, __pyx_v_l, __pyx_v_TR); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2688, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_6, 1); __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+2689: self.compute_dsigdt(sig)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.compute_dsigdt(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sig); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2689, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2690:
2691:
+2692: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t, contactMatrix,
static PyObject *__pyx_f_6pyross_9inference_14SEAIRQ_testing_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, PyObject *__pyx_v_contactMatrix, struct __pyx_opt_args_6pyross_9inference_14SEAIRQ_testing_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_e, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_a, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Ia, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_Is, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_TR, 1);
__Pyx_XDECREF(__pyx_v_q);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_14SEAIRQ_testing_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+2693: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_e = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_a = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Ia = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_Is = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_TR = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_M;
PyObject *__pyx_v_q = NULL;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
2694: cdef:
2695: double [:] s, e, a, Ia, Is, Q, TR
+2696: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2697: s = x[0:M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
0,
__pyx_v_M,
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2697, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2698: e = x[M:2*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
__pyx_v_M,
(2 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2698, __pyx_L1_error)
}
__pyx_v_e = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2699: a = x[2*M:3*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(2 * __pyx_v_M),
(3 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2699, __pyx_L1_error)
}
__pyx_v_a = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2700: Ia = x[3*M:4*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(3 * __pyx_v_M),
(4 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2700, __pyx_L1_error)
}
__pyx_v_Ia = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2701: Is = x[4*M:5*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(4 * __pyx_v_M),
(5 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2701, __pyx_L1_error)
}
__pyx_v_Is = __pyx_t_2;
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
+2702: q = x[5*M:6*M]
__pyx_t_2.data = __pyx_v_x.data;
__pyx_t_2.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_2, 0);
__pyx_t_3 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_2,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_3,
(5 * __pyx_v_M),
(6 * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 2702, __pyx_L1_error)
}
__pyx_t_4 = __pyx_memoryview_fromslice(__pyx_t_2, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2702, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__pyx_t_2.memview = NULL;
__pyx_t_2.data = NULL;
__pyx_v_q = __pyx_t_4;
__pyx_t_4 = 0;
+2703: self.CM = contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_contactMatrix); __pyx_t_6 = __pyx_v_contactMatrix; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2703, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2703, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+2704: TR=self.testRate(t)
__pyx_t_6 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_self->testRate); __pyx_t_5 = __pyx_v_self->testRate; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2704, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2704, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_TR = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2705: cdef double [:] l=np.zeros((M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_7, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2705, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2706: self.fill_lambdas(a, Ia, Is, l)
__pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_v_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2706, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2707: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2707, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2708: self.noise_correlation(s, e, a, Ia, Is, q, l, TR)
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_q, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2708, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_t_2, __pyx_v_l, __pyx_v_TR); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+2709: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2709, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2710: self.jacobian(s, e, a, Ia, Is, q, l, TR)
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_q, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2710, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_SEAIRQ_testing *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_s, __pyx_v_e, __pyx_v_a, __pyx_v_Ia, __pyx_v_Is, __pyx_t_2, __pyx_v_l, __pyx_v_TR); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2710, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_2, 1); __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
2711:
+2712: cdef fill_lambdas(self, double [:] a, double [:] Ia, double [:] Is, double [:] l):
static PyObject *__pyx_f_6pyross_9inference_14SEAIRQ_testing_fill_lambdas(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2713: cdef:
+2714: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 2714, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+2715: double [:] fsa=self.fsa, beta=self.beta, fi=self.fi
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2715, __pyx_L1_error) __pyx_v_fsa = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2715, __pyx_L1_error) __pyx_v_beta = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2715, __pyx_L1_error) __pyx_v_fi = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+2716: Py_ssize_t m, n, M=self.M
__pyx_t_3 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_3;
+2717: for m in range(M):
__pyx_t_3 = __pyx_v_M;
__pyx_t_4 = __pyx_t_3;
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_m = __pyx_t_5;
+2718: for n in range(M):
__pyx_t_6 = __pyx_v_M;
__pyx_t_7 = __pyx_t_6;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_n = __pyx_t_8;
+2719: l[m] += beta[m]*CM[m,n]*(Ia[n]+a[n]+fsa[n]*Is[n])/fi[n]
__pyx_t_9 = __pyx_v_m;
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = __pyx_v_n;
__pyx_t_12 = __pyx_v_n;
__pyx_t_13 = __pyx_v_n;
__pyx_t_14 = __pyx_v_n;
__pyx_t_15 = __pyx_v_n;
__pyx_t_16 = __pyx_v_n;
__pyx_t_17 = __pyx_v_m;
*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_17 * __pyx_v_l.strides[0]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_9 * __pyx_v_beta.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_10 * __pyx_v_CM.strides[0]) ) + __pyx_t_11 * __pyx_v_CM.strides[1]) )))) * (((*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_12 * __pyx_v_Ia.strides[0]) ))) + (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_13 * __pyx_v_a.strides[0]) )))) + ((*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_14 * __pyx_v_fsa.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_15 * __pyx_v_Is.strides[0]) )))))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_16 * __pyx_v_fi.strides[0]) ))));
}
}
2720:
+2721: cdef jacobian(self, double [:] s, double [:] e, double [:] a, double [:] Ia, double [:] Is, double [:] q, double [:] l, double [:] TR):
static PyObject *__pyx_f_6pyross_9inference_14SEAIRQ_testing_jacobian(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_e, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_q, __Pyx_memviewslice __pyx_v_l, __Pyx_memviewslice __pyx_v_TR) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
double __pyx_v_N;
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_ars = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kapE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_t0;
double __pyx_v_tE;
double __pyx_v_tA;
double __pyx_v_tIa;
double __pyx_v_tIs;
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__Pyx_XDECREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_204);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_ars, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_kapE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2722: cdef:
+2723: Py_ssize_t m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+2724: double N = self.N
__pyx_t_2 = __pyx_v_self->__pyx_base.N; __pyx_v_N = __pyx_t_2;
+2725: double [:] gE=self.gE, gA=self.gA, gIa=self.gIa, gIs=self.gIs, fsa=self.fsa
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2725, __pyx_L1_error) __pyx_v_gE = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gA), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2725, __pyx_L1_error) __pyx_v_gA = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2725, __pyx_L1_error) __pyx_v_gIa = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2725, __pyx_L1_error) __pyx_v_gIs = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2725, __pyx_L1_error) __pyx_v_fsa = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+2726: double [:] ars=self.ars, kapE=self.kapE, beta=self.beta
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->ars), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2726, __pyx_L1_error) __pyx_v_ars = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->kapE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2726, __pyx_L1_error) __pyx_v_kapE = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2726, __pyx_L1_error) __pyx_v_beta = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
2727: double t0, tE, tA, tIa, tIs
+2728: double [:] alpha=self.alpha, balpha=1-self.alpha, fi=self.fi
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2728, __pyx_L1_error) __pyx_v_alpha = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_4 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2728, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2728, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_balpha = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2728, __pyx_L1_error) __pyx_v_fi = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+2729: double [:, :, :, :] J = self.J
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2729, __pyx_L1_error) __pyx_v_J = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+2730: double [:, :] CM=self.CM
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2730, __pyx_L1_error) __pyx_v_CM = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2731: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_7 = __pyx_t_1;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_m = __pyx_t_8;
+2732: t0 = 1./(ars[m]*(self.fi[m]-q[m]-Is[m])+Is[m])
__pyx_t_9 = __pyx_v_m;
__pyx_t_4 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_9 * __pyx_v_ars.strides[0]) )))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_10 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_v_m, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_11 = __pyx_v_m;
__pyx_t_12 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_q.data + __pyx_t_11 * __pyx_v_q.strides[0]) )))); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_13 = PyNumber_Subtract(__pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_13);
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_14 = __pyx_v_m;
__pyx_t_12 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_14 * __pyx_v_Is.strides[0]) )))); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__pyx_t_10 = PyNumber_Subtract(__pyx_t_13, __pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__pyx_t_12 = PyNumber_Multiply(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_15 = __pyx_v_m;
__pyx_t_10 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_15 * __pyx_v_Is.strides[0]) )))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__pyx_t_4 = PyNumber_Add(__pyx_t_12, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_10 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_, __pyx_t_4, 1., 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_10); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2732, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_v_t0 = __pyx_t_2;
+2733: tE = TR[m]*ars[m]*kapE[m]*t0/N
__pyx_t_16 = __pyx_v_m;
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = __pyx_v_m;
__pyx_v_tE = (((((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_16 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_17 * __pyx_v_ars.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_kapE.data + __pyx_t_18 * __pyx_v_kapE.strides[0]) )))) * __pyx_v_t0) / __pyx_v_N);
+2734: tA= TR[m]*ars[m]*t0/N
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = __pyx_v_m;
__pyx_v_tA = ((((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_19 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_20 * __pyx_v_ars.strides[0]) )))) * __pyx_v_t0) / __pyx_v_N);
+2735: tIa = TR[m]*ars[m]*t0/N
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_m;
__pyx_v_tIa = ((((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_21 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_22 * __pyx_v_ars.strides[0]) )))) * __pyx_v_t0) / __pyx_v_N);
+2736: tIs = TR[m]*t0/N
__pyx_t_23 = __pyx_v_m;
__pyx_v_tIs = (((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_23 * __pyx_v_TR.strides[0]) ))) * __pyx_v_t0) / __pyx_v_N);
2737:
+2738: for n in range(M):
__pyx_t_24 = __pyx_v_M;
__pyx_t_25 = __pyx_t_24;
for (__pyx_t_26 = 0; __pyx_t_26 < __pyx_t_25; __pyx_t_26+=1) {
__pyx_v_n = __pyx_t_26;
+2739: J[0, m, 2, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_27 = __pyx_v_m;
__pyx_t_28 = __pyx_v_m;
__pyx_t_29 = __pyx_v_m;
__pyx_t_30 = __pyx_v_n;
__pyx_t_31 = __pyx_v_n;
__pyx_t_32 = 0;
__pyx_t_33 = __pyx_v_m;
__pyx_t_34 = 2;
__pyx_t_35 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_32 * __pyx_v_J.strides[0]) ) + __pyx_t_33 * __pyx_v_J.strides[1]) ) + __pyx_t_34 * __pyx_v_J.strides[2]) ) + __pyx_t_35 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_27 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_28 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_29 * __pyx_v_CM.strides[0]) ) + __pyx_t_30 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_31 * __pyx_v_fi.strides[0]) ))));
+2740: J[0, m, 3, n] = -s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_36 = __pyx_v_m;
__pyx_t_37 = __pyx_v_m;
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = __pyx_v_n;
__pyx_t_40 = __pyx_v_n;
__pyx_t_41 = 0;
__pyx_t_42 = __pyx_v_m;
__pyx_t_43 = 3;
__pyx_t_44 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_41 * __pyx_v_J.strides[0]) ) + __pyx_t_42 * __pyx_v_J.strides[1]) ) + __pyx_t_43 * __pyx_v_J.strides[2]) ) + __pyx_t_44 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_36 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_37 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_38 * __pyx_v_CM.strides[0]) ) + __pyx_t_39 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_40 * __pyx_v_fi.strides[0]) ))));
+2741: J[0, m, 4, n] = -s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_45 = __pyx_v_m;
__pyx_t_46 = __pyx_v_m;
__pyx_t_47 = __pyx_v_m;
__pyx_t_48 = __pyx_v_n;
__pyx_t_49 = __pyx_v_n;
__pyx_t_50 = __pyx_v_n;
__pyx_t_51 = 0;
__pyx_t_52 = __pyx_v_m;
__pyx_t_53 = 4;
__pyx_t_54 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_51 * __pyx_v_J.strides[0]) ) + __pyx_t_52 * __pyx_v_J.strides[1]) ) + __pyx_t_53 * __pyx_v_J.strides[2]) ) + __pyx_t_54 * __pyx_v_J.strides[3]) )) = (((((-(*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_45 * __pyx_v_s.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_46 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_47 * __pyx_v_CM.strides[0]) ) + __pyx_t_48 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_49 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_50 * __pyx_v_fi.strides[0]) ))));
+2742: J[1, m, 2, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_55 = __pyx_v_m;
__pyx_t_56 = __pyx_v_m;
__pyx_t_57 = __pyx_v_m;
__pyx_t_58 = __pyx_v_n;
__pyx_t_59 = __pyx_v_n;
__pyx_t_60 = 1;
__pyx_t_61 = __pyx_v_m;
__pyx_t_62 = 2;
__pyx_t_63 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_60 * __pyx_v_J.strides[0]) ) + __pyx_t_61 * __pyx_v_J.strides[1]) ) + __pyx_t_62 * __pyx_v_J.strides[2]) ) + __pyx_t_63 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_55 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_56 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_57 * __pyx_v_CM.strides[0]) ) + __pyx_t_58 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_59 * __pyx_v_fi.strides[0]) ))));
+2743: J[1, m, 3, n] = s[m]*beta[m]*CM[m, n]/fi[n]
__pyx_t_64 = __pyx_v_m;
__pyx_t_65 = __pyx_v_m;
__pyx_t_66 = __pyx_v_m;
__pyx_t_67 = __pyx_v_n;
__pyx_t_68 = __pyx_v_n;
__pyx_t_69 = 1;
__pyx_t_70 = __pyx_v_m;
__pyx_t_71 = 3;
__pyx_t_72 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_69 * __pyx_v_J.strides[0]) ) + __pyx_t_70 * __pyx_v_J.strides[1]) ) + __pyx_t_71 * __pyx_v_J.strides[2]) ) + __pyx_t_72 * __pyx_v_J.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_64 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_65 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_66 * __pyx_v_CM.strides[0]) ) + __pyx_t_67 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_68 * __pyx_v_fi.strides[0]) ))));
+2744: J[1, m, 4, n] = s[m]*beta[m]*CM[m, n]*fsa[n]/fi[n]
__pyx_t_73 = __pyx_v_m;
__pyx_t_74 = __pyx_v_m;
__pyx_t_75 = __pyx_v_m;
__pyx_t_76 = __pyx_v_n;
__pyx_t_77 = __pyx_v_n;
__pyx_t_78 = __pyx_v_n;
__pyx_t_79 = 1;
__pyx_t_80 = __pyx_v_m;
__pyx_t_81 = 4;
__pyx_t_82 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_79 * __pyx_v_J.strides[0]) ) + __pyx_t_80 * __pyx_v_J.strides[1]) ) + __pyx_t_81 * __pyx_v_J.strides[2]) ) + __pyx_t_82 * __pyx_v_J.strides[3]) )) = (((((*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_73 * __pyx_v_s.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_beta.data + __pyx_t_74 * __pyx_v_beta.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_75 * __pyx_v_CM.strides[0]) ) + __pyx_t_76 * __pyx_v_CM.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_fsa.data + __pyx_t_77 * __pyx_v_fsa.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_78 * __pyx_v_fi.strides[0]) ))));
}
+2745: J[0, m, 0, m] = -l[m]
__pyx_t_83 = __pyx_v_m;
__pyx_t_84 = 0;
__pyx_t_85 = __pyx_v_m;
__pyx_t_86 = 0;
__pyx_t_87 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_84 * __pyx_v_J.strides[0]) ) + __pyx_t_85 * __pyx_v_J.strides[1]) ) + __pyx_t_86 * __pyx_v_J.strides[2]) ) + __pyx_t_87 * __pyx_v_J.strides[3]) )) = (-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_83 * __pyx_v_l.strides[0]) ))));
+2746: J[1, m, 0, m] = l[m]
__pyx_t_88 = __pyx_v_m;
__pyx_t_89 = 1;
__pyx_t_90 = __pyx_v_m;
__pyx_t_91 = 0;
__pyx_t_92 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_89 * __pyx_v_J.strides[0]) ) + __pyx_t_90 * __pyx_v_J.strides[1]) ) + __pyx_t_91 * __pyx_v_J.strides[2]) ) + __pyx_t_92 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_88 * __pyx_v_l.strides[0]) )));
+2747: J[1, m, 1, m] = - gE[m] - tE
__pyx_t_93 = __pyx_v_m;
__pyx_t_94 = 1;
__pyx_t_95 = __pyx_v_m;
__pyx_t_96 = 1;
__pyx_t_97 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_94 * __pyx_v_J.strides[0]) ) + __pyx_t_95 * __pyx_v_J.strides[1]) ) + __pyx_t_96 * __pyx_v_J.strides[2]) ) + __pyx_t_97 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_93 * __pyx_v_gE.strides[0]) )))) - __pyx_v_tE);
+2748: J[1, m, 4, m] += (1-ars[m])*tE*t0*e[m]
__pyx_t_98 = __pyx_v_m;
__pyx_t_99 = __pyx_v_m;
__pyx_t_100 = 1;
__pyx_t_101 = __pyx_v_m;
__pyx_t_102 = 4;
__pyx_t_103 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_100 * __pyx_v_J.strides[0]) ) + __pyx_t_101 * __pyx_v_J.strides[1]) ) + __pyx_t_102 * __pyx_v_J.strides[2]) ) + __pyx_t_103 * __pyx_v_J.strides[3]) )) += ((((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_98 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tE) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_99 * __pyx_v_e.strides[0]) ))));
+2749: J[1, m, 5, m] = -ars[m]*tE*t0*e[m]
__pyx_t_104 = __pyx_v_m;
__pyx_t_105 = __pyx_v_m;
__pyx_t_106 = 1;
__pyx_t_107 = __pyx_v_m;
__pyx_t_108 = 5;
__pyx_t_109 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_106 * __pyx_v_J.strides[0]) ) + __pyx_t_107 * __pyx_v_J.strides[1]) ) + __pyx_t_108 * __pyx_v_J.strides[2]) ) + __pyx_t_109 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_104 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tE) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_105 * __pyx_v_e.strides[0]) ))));
+2750: J[2, m, 1, m] = gE[m]
__pyx_t_110 = __pyx_v_m;
__pyx_t_111 = 2;
__pyx_t_112 = __pyx_v_m;
__pyx_t_113 = 1;
__pyx_t_114 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_111 * __pyx_v_J.strides[0]) ) + __pyx_t_112 * __pyx_v_J.strides[1]) ) + __pyx_t_113 * __pyx_v_J.strides[2]) ) + __pyx_t_114 * __pyx_v_J.strides[3]) )) = (*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_110 * __pyx_v_gE.strides[0]) )));
+2751: J[2, m, 2, m] = - gA[m] - tA
__pyx_t_115 = __pyx_v_m;
__pyx_t_116 = 2;
__pyx_t_117 = __pyx_v_m;
__pyx_t_118 = 2;
__pyx_t_119 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_116 * __pyx_v_J.strides[0]) ) + __pyx_t_117 * __pyx_v_J.strides[1]) ) + __pyx_t_118 * __pyx_v_J.strides[2]) ) + __pyx_t_119 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_115 * __pyx_v_gA.strides[0]) )))) - __pyx_v_tA);
+2752: J[2, m, 4, m] = (1-ars[m])*tA*t0*a[m]
__pyx_t_120 = __pyx_v_m;
__pyx_t_121 = __pyx_v_m;
__pyx_t_122 = 2;
__pyx_t_123 = __pyx_v_m;
__pyx_t_124 = 4;
__pyx_t_125 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_122 * __pyx_v_J.strides[0]) ) + __pyx_t_123 * __pyx_v_J.strides[1]) ) + __pyx_t_124 * __pyx_v_J.strides[2]) ) + __pyx_t_125 * __pyx_v_J.strides[3]) )) = ((((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_120 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tA) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_121 * __pyx_v_a.strides[0]) ))));
+2753: J[2, m, 5, m] = - ars[m]*tA*t0*a[m]
__pyx_t_126 = __pyx_v_m;
__pyx_t_127 = __pyx_v_m;
__pyx_t_128 = 2;
__pyx_t_129 = __pyx_v_m;
__pyx_t_130 = 5;
__pyx_t_131 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_128 * __pyx_v_J.strides[0]) ) + __pyx_t_129 * __pyx_v_J.strides[1]) ) + __pyx_t_130 * __pyx_v_J.strides[2]) ) + __pyx_t_131 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_126 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tA) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_127 * __pyx_v_a.strides[0]) ))));
+2754: J[3, m, 2, m] = alpha[m]*gA[m]
__pyx_t_132 = __pyx_v_m;
__pyx_t_133 = __pyx_v_m;
__pyx_t_134 = 3;
__pyx_t_135 = __pyx_v_m;
__pyx_t_136 = 2;
__pyx_t_137 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_134 * __pyx_v_J.strides[0]) ) + __pyx_t_135 * __pyx_v_J.strides[1]) ) + __pyx_t_136 * __pyx_v_J.strides[2]) ) + __pyx_t_137 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_132 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_133 * __pyx_v_gA.strides[0]) ))));
+2755: J[3, m, 3, m] = - gIa[m] - tIa
__pyx_t_138 = __pyx_v_m;
__pyx_t_139 = 3;
__pyx_t_140 = __pyx_v_m;
__pyx_t_141 = 3;
__pyx_t_142 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_139 * __pyx_v_J.strides[0]) ) + __pyx_t_140 * __pyx_v_J.strides[1]) ) + __pyx_t_141 * __pyx_v_J.strides[2]) ) + __pyx_t_142 * __pyx_v_J.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_138 * __pyx_v_gIa.strides[0]) )))) - __pyx_v_tIa);
+2756: J[3, m, 4, m] = (1-ars[m])*tIa*t0*Ia[m]
__pyx_t_143 = __pyx_v_m;
__pyx_t_144 = __pyx_v_m;
__pyx_t_145 = 3;
__pyx_t_146 = __pyx_v_m;
__pyx_t_147 = 4;
__pyx_t_148 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_145 * __pyx_v_J.strides[0]) ) + __pyx_t_146 * __pyx_v_J.strides[1]) ) + __pyx_t_147 * __pyx_v_J.strides[2]) ) + __pyx_t_148 * __pyx_v_J.strides[3]) )) = ((((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_143 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tIa) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_144 * __pyx_v_Ia.strides[0]) ))));
+2757: J[3, m, 5, m] = - ars[m]*tIa*t0*Ia[m]
__pyx_t_149 = __pyx_v_m;
__pyx_t_150 = __pyx_v_m;
__pyx_t_151 = 3;
__pyx_t_152 = __pyx_v_m;
__pyx_t_153 = 5;
__pyx_t_154 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_151 * __pyx_v_J.strides[0]) ) + __pyx_t_152 * __pyx_v_J.strides[1]) ) + __pyx_t_153 * __pyx_v_J.strides[2]) ) + __pyx_t_154 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_149 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tIa) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_150 * __pyx_v_Ia.strides[0]) ))));
+2758: J[4, m, 2, m] = balpha[m]*gA[m]
__pyx_t_155 = __pyx_v_m;
__pyx_t_156 = __pyx_v_m;
__pyx_t_157 = 4;
__pyx_t_158 = __pyx_v_m;
__pyx_t_159 = 2;
__pyx_t_160 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_157 * __pyx_v_J.strides[0]) ) + __pyx_t_158 * __pyx_v_J.strides[1]) ) + __pyx_t_159 * __pyx_v_J.strides[2]) ) + __pyx_t_160 * __pyx_v_J.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_155 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_156 * __pyx_v_gA.strides[0]) ))));
+2759: J[4, m, 4, m] = - gIs[m] - tIs + (1-ars[m])*tIs*t0*Is[m]
__pyx_t_161 = __pyx_v_m;
__pyx_t_162 = __pyx_v_m;
__pyx_t_163 = __pyx_v_m;
__pyx_t_164 = 4;
__pyx_t_165 = __pyx_v_m;
__pyx_t_166 = 4;
__pyx_t_167 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_164 * __pyx_v_J.strides[0]) ) + __pyx_t_165 * __pyx_v_J.strides[1]) ) + __pyx_t_166 * __pyx_v_J.strides[2]) ) + __pyx_t_167 * __pyx_v_J.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_161 * __pyx_v_gIs.strides[0]) )))) - __pyx_v_tIs) + ((((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_162 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tIs) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_163 * __pyx_v_Is.strides[0]) )))));
+2760: J[4, m, 5, m] = - ars[m]*tIs*t0*Is[m]
__pyx_t_168 = __pyx_v_m;
__pyx_t_169 = __pyx_v_m;
__pyx_t_170 = 4;
__pyx_t_171 = __pyx_v_m;
__pyx_t_172 = 5;
__pyx_t_173 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_170 * __pyx_v_J.strides[0]) ) + __pyx_t_171 * __pyx_v_J.strides[1]) ) + __pyx_t_172 * __pyx_v_J.strides[2]) ) + __pyx_t_173 * __pyx_v_J.strides[3]) )) = ((((-(*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_168 * __pyx_v_ars.strides[0]) )))) * __pyx_v_tIs) * __pyx_v_t0) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_169 * __pyx_v_Is.strides[0]) ))));
+2761: J[5, m, 1, m] = tE
__pyx_t_174 = 5;
__pyx_t_175 = __pyx_v_m;
__pyx_t_176 = 1;
__pyx_t_177 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_174 * __pyx_v_J.strides[0]) ) + __pyx_t_175 * __pyx_v_J.strides[1]) ) + __pyx_t_176 * __pyx_v_J.strides[2]) ) + __pyx_t_177 * __pyx_v_J.strides[3]) )) = __pyx_v_tE;
+2762: J[5, m, 2, m] = tA
__pyx_t_178 = 5;
__pyx_t_179 = __pyx_v_m;
__pyx_t_180 = 2;
__pyx_t_181 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_178 * __pyx_v_J.strides[0]) ) + __pyx_t_179 * __pyx_v_J.strides[1]) ) + __pyx_t_180 * __pyx_v_J.strides[2]) ) + __pyx_t_181 * __pyx_v_J.strides[3]) )) = __pyx_v_tA;
+2763: J[5, m, 3, m] = tIa
__pyx_t_182 = 5;
__pyx_t_183 = __pyx_v_m;
__pyx_t_184 = 3;
__pyx_t_185 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_182 * __pyx_v_J.strides[0]) ) + __pyx_t_183 * __pyx_v_J.strides[1]) ) + __pyx_t_184 * __pyx_v_J.strides[2]) ) + __pyx_t_185 * __pyx_v_J.strides[3]) )) = __pyx_v_tIa;
+2764: J[5, m, 4, m] = tIs - (1-ars[m])*t0*(tE*e[m]+tA*a[m]+tIa*Ia[m]+tIs*Is[m])
__pyx_t_186 = __pyx_v_m;
__pyx_t_187 = __pyx_v_m;
__pyx_t_188 = __pyx_v_m;
__pyx_t_189 = __pyx_v_m;
__pyx_t_190 = __pyx_v_m;
__pyx_t_191 = 5;
__pyx_t_192 = __pyx_v_m;
__pyx_t_193 = 4;
__pyx_t_194 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_191 * __pyx_v_J.strides[0]) ) + __pyx_t_192 * __pyx_v_J.strides[1]) ) + __pyx_t_193 * __pyx_v_J.strides[2]) ) + __pyx_t_194 * __pyx_v_J.strides[3]) )) = (__pyx_v_tIs - (((1.0 - (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_186 * __pyx_v_ars.strides[0]) )))) * __pyx_v_t0) * ((((__pyx_v_tE * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_187 * __pyx_v_e.strides[0]) )))) + (__pyx_v_tA * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_188 * __pyx_v_a.strides[0]) ))))) + (__pyx_v_tIa * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_189 * __pyx_v_Ia.strides[0]) ))))) + (__pyx_v_tIs * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_190 * __pyx_v_Is.strides[0]) )))))));
+2765: J[5, m, 5, m] = ars[m]*t0*(tE*e[m]+tA*a[m]+tIa*Ia[m]+tIs*Is[m])
__pyx_t_195 = __pyx_v_m;
__pyx_t_196 = __pyx_v_m;
__pyx_t_197 = __pyx_v_m;
__pyx_t_198 = __pyx_v_m;
__pyx_t_199 = __pyx_v_m;
__pyx_t_200 = 5;
__pyx_t_201 = __pyx_v_m;
__pyx_t_202 = 5;
__pyx_t_203 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_200 * __pyx_v_J.strides[0]) ) + __pyx_t_201 * __pyx_v_J.strides[1]) ) + __pyx_t_202 * __pyx_v_J.strides[2]) ) + __pyx_t_203 * __pyx_v_J.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_195 * __pyx_v_ars.strides[0]) ))) * __pyx_v_t0) * ((((__pyx_v_tE * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_196 * __pyx_v_e.strides[0]) )))) + (__pyx_v_tA * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_197 * __pyx_v_a.strides[0]) ))))) + (__pyx_v_tIa * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_198 * __pyx_v_Ia.strides[0]) ))))) + (__pyx_v_tIs * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_199 * __pyx_v_Is.strides[0]) ))))));
}
+2766: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_204 = PyTuple_New(2); if (unlikely(!__pyx_t_204)) __PYX_ERR(0, 2766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_204); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_204, 0, __pyx_t_12); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_204, 1, __pyx_t_13); __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_13 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_13)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_13); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_10 = (__pyx_t_13) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_13, __pyx_t_204) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_204); __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_204); __pyx_t_204 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2766, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2766, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_10); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_10); __pyx_t_10 = 0;
2767:
2768:
+2769: cdef noise_correlation(self, double [:] s, double [:] e, double [:] a, double [:] Ia, double [:] Is, double [:] q, double [:] l, double [:] TR):
static PyObject *__pyx_f_6pyross_9inference_14SEAIRQ_testing_noise_correlation(struct __pyx_obj_6pyross_9inference_SEAIRQ_testing *__pyx_v_self, __Pyx_memviewslice __pyx_v_s, __Pyx_memviewslice __pyx_v_e, __Pyx_memviewslice __pyx_v_a, __Pyx_memviewslice __pyx_v_Ia, __Pyx_memviewslice __pyx_v_Is, __Pyx_memviewslice __pyx_v_q, __Pyx_memviewslice __pyx_v_l, __Pyx_memviewslice __pyx_v_TR) {
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
double __pyx_v_N;
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIa = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gIs = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gE = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_gA = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_ars = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_kapE = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_tE;
double __pyx_v_tA;
double __pyx_v_tIa;
double __pyx_v_tIs;
__Pyx_memviewslice __pyx_v_alpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_balpha = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_t0 = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__Pyx_XDECREF(__pyx_t_4);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_XDECREF(__pyx_t_117);
__Pyx_AddTraceback("pyross.inference.SEAIRQ_testing.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gIs, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_gA, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_ars, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_kapE, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_alpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_balpha, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__Pyx_XDECREF(__pyx_v_t0);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2770: cdef:
+2771: Py_ssize_t m, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2772: double N=self.N
__pyx_t_2 = __pyx_v_self->__pyx_base.N; __pyx_v_N = __pyx_t_2;
+2773: double [:] beta=self.beta, gIa=self.gIa, gIs=self.gIs, gE=self.gE, gA=self.gA
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2773, __pyx_L1_error) __pyx_v_beta = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2773, __pyx_L1_error) __pyx_v_gIa = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.gIs), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2773, __pyx_L1_error) __pyx_v_gIs = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2773, __pyx_L1_error) __pyx_v_gE = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->gA), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2773, __pyx_L1_error) __pyx_v_gA = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+2774: double [:] ars=self.ars, kapE=self.kapE
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->ars), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2774, __pyx_L1_error) __pyx_v_ars = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->kapE), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2774, __pyx_L1_error) __pyx_v_kapE = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
2775: double tE, tA, tIa, tIs
+2776: double [:] alpha=self.alpha, balpha=1-self.alpha
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.alpha), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2776, __pyx_L1_error) __pyx_v_alpha = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL; __pyx_t_4 = PyNumber_Subtract(__pyx_int_1, ((PyObject *)__pyx_v_self->__pyx_base.alpha)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2776, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_4, PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2776, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_balpha = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+2777: double [:, :, :, :] B = self.B
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2777, __pyx_L1_error) __pyx_v_B = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+2778: for m in range(M): # only fill in the upper triangular form
__pyx_t_1 = __pyx_v_M;
__pyx_t_6 = __pyx_t_1;
for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
__pyx_v_m = __pyx_t_7;
+2779: t0 = 1./(ars[m]*(self.fi[m]-q[m]-Is[m])+Is[m])
__pyx_t_8 = __pyx_v_m;
__pyx_t_4 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_8 * __pyx_v_ars.strides[0]) )))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_9 = __Pyx_GetItemInt(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_v_m, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 0, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_10 = __pyx_v_m;
__pyx_t_11 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_q.data + __pyx_t_10 * __pyx_v_q.strides[0]) )))); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_12 = PyNumber_Subtract(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_12);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_13 = __pyx_v_m;
__pyx_t_11 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_13 * __pyx_v_Is.strides[0]) )))); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_9 = PyNumber_Subtract(__pyx_t_12, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = PyNumber_Multiply(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_14 = __pyx_v_m;
__pyx_t_9 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_14 * __pyx_v_Is.strides[0]) )))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_4 = PyNumber_Add(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_9 = __Pyx_PyFloat_TrueDivideCObj(__pyx_float_1_, __pyx_t_4, 1., 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2779, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF_SET(__pyx_v_t0, __pyx_t_9);
__pyx_t_9 = 0;
+2780: tE = TR[m]*ars[m]*kapE[m]*t0/N
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = __pyx_v_m;
__pyx_t_17 = __pyx_v_m;
__pyx_t_9 = PyFloat_FromDouble((((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_15 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_16 * __pyx_v_ars.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_kapE.data + __pyx_t_17 * __pyx_v_kapE.strides[0]) ))))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2780, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_4 = PyNumber_Multiply(__pyx_t_9, __pyx_v_t0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2780, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_9 = PyFloat_FromDouble(__pyx_v_N); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2780, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_11 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2780, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2780, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_v_tE = __pyx_t_2;
+2781: tA= TR[m]*ars[m]*t0/N
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = __pyx_v_m;
__pyx_t_11 = PyFloat_FromDouble(((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_18 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_19 * __pyx_v_ars.strides[0]) ))))); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_9 = PyNumber_Multiply(__pyx_t_11, __pyx_v_t0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_11 = PyFloat_FromDouble(__pyx_v_N); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_9, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2781, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2781, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_v_tA = __pyx_t_2;
+2782: tIa = TR[m]*ars[m]*t0/N
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = __pyx_v_m;
__pyx_t_4 = PyFloat_FromDouble(((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_20 * __pyx_v_TR.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_ars.data + __pyx_t_21 * __pyx_v_ars.strides[0]) ))))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2782, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_11 = PyNumber_Multiply(__pyx_t_4, __pyx_v_t0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2782, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_N); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2782, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_9 = __Pyx_PyNumber_Divide(__pyx_t_11, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2782, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2782, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_v_tIa = __pyx_t_2;
+2783: tIs = TR[m]*t0/N
__pyx_t_22 = __pyx_v_m;
__pyx_t_9 = PyFloat_FromDouble((*((double *) ( /* dim=0 */ (__pyx_v_TR.data + __pyx_t_22 * __pyx_v_TR.strides[0]) )))); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2783, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_4 = PyNumber_Multiply(__pyx_t_9, __pyx_v_t0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2783, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_9 = PyFloat_FromDouble(__pyx_v_N); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2783, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_11 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2783, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_11);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_t_11); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 2783, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
__pyx_v_tIs = __pyx_t_2;
2784:
+2785: B[0, m, 0, m] = l[m]*s[m]
__pyx_t_23 = __pyx_v_m;
__pyx_t_24 = __pyx_v_m;
__pyx_t_25 = 0;
__pyx_t_26 = __pyx_v_m;
__pyx_t_27 = 0;
__pyx_t_28 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_25 * __pyx_v_B.strides[0]) ) + __pyx_t_26 * __pyx_v_B.strides[1]) ) + __pyx_t_27 * __pyx_v_B.strides[2]) ) + __pyx_t_28 * __pyx_v_B.strides[3]) )) = ((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_23 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_24 * __pyx_v_s.strides[0]) ))));
+2786: B[0, m, 1, m] = - l[m]*s[m]
__pyx_t_29 = __pyx_v_m;
__pyx_t_30 = __pyx_v_m;
__pyx_t_31 = 0;
__pyx_t_32 = __pyx_v_m;
__pyx_t_33 = 1;
__pyx_t_34 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_31 * __pyx_v_B.strides[0]) ) + __pyx_t_32 * __pyx_v_B.strides[1]) ) + __pyx_t_33 * __pyx_v_B.strides[2]) ) + __pyx_t_34 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_29 * __pyx_v_l.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_30 * __pyx_v_s.strides[0]) ))));
+2787: B[1, m, 1, m] = l[m]*s[m] + (gE[m]+tE)*e[m]
__pyx_t_35 = __pyx_v_m;
__pyx_t_36 = __pyx_v_m;
__pyx_t_37 = __pyx_v_m;
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = 1;
__pyx_t_40 = __pyx_v_m;
__pyx_t_41 = 1;
__pyx_t_42 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_39 * __pyx_v_B.strides[0]) ) + __pyx_t_40 * __pyx_v_B.strides[1]) ) + __pyx_t_41 * __pyx_v_B.strides[2]) ) + __pyx_t_42 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_l.data + __pyx_t_35 * __pyx_v_l.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_36 * __pyx_v_s.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_37 * __pyx_v_gE.strides[0]) ))) + __pyx_v_tE) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_38 * __pyx_v_e.strides[0]) )))));
+2788: B[1, m, 2, m] = -gE[m]*e[m]
__pyx_t_43 = __pyx_v_m;
__pyx_t_44 = __pyx_v_m;
__pyx_t_45 = 1;
__pyx_t_46 = __pyx_v_m;
__pyx_t_47 = 2;
__pyx_t_48 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_45 * __pyx_v_B.strides[0]) ) + __pyx_t_46 * __pyx_v_B.strides[1]) ) + __pyx_t_47 * __pyx_v_B.strides[2]) ) + __pyx_t_48 * __pyx_v_B.strides[3]) )) = ((-(*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_43 * __pyx_v_gE.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_44 * __pyx_v_e.strides[0]) ))));
+2789: B[2, m, 2, m] = gE[m]*e[m]+(gA[m]+tA)*a[m]
__pyx_t_49 = __pyx_v_m;
__pyx_t_50 = __pyx_v_m;
__pyx_t_51 = __pyx_v_m;
__pyx_t_52 = __pyx_v_m;
__pyx_t_53 = 2;
__pyx_t_54 = __pyx_v_m;
__pyx_t_55 = 2;
__pyx_t_56 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_53 * __pyx_v_B.strides[0]) ) + __pyx_t_54 * __pyx_v_B.strides[1]) ) + __pyx_t_55 * __pyx_v_B.strides[2]) ) + __pyx_t_56 * __pyx_v_B.strides[3]) )) = (((*((double *) ( /* dim=0 */ (__pyx_v_gE.data + __pyx_t_49 * __pyx_v_gE.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_50 * __pyx_v_e.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_51 * __pyx_v_gA.strides[0]) ))) + __pyx_v_tA) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_52 * __pyx_v_a.strides[0]) )))));
+2790: B[2, m, 3, m] = -alpha[m]*gA[m]*a[m]
__pyx_t_57 = __pyx_v_m;
__pyx_t_58 = __pyx_v_m;
__pyx_t_59 = __pyx_v_m;
__pyx_t_60 = 2;
__pyx_t_61 = __pyx_v_m;
__pyx_t_62 = 3;
__pyx_t_63 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_60 * __pyx_v_B.strides[0]) ) + __pyx_t_61 * __pyx_v_B.strides[1]) ) + __pyx_t_62 * __pyx_v_B.strides[2]) ) + __pyx_t_63 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_57 * __pyx_v_alpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_58 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_59 * __pyx_v_a.strides[0]) ))));
+2791: B[2, m, 4, m] = -balpha[m]*gA[m]*a[m]
__pyx_t_64 = __pyx_v_m;
__pyx_t_65 = __pyx_v_m;
__pyx_t_66 = __pyx_v_m;
__pyx_t_67 = 2;
__pyx_t_68 = __pyx_v_m;
__pyx_t_69 = 4;
__pyx_t_70 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_67 * __pyx_v_B.strides[0]) ) + __pyx_t_68 * __pyx_v_B.strides[1]) ) + __pyx_t_69 * __pyx_v_B.strides[2]) ) + __pyx_t_70 * __pyx_v_B.strides[3]) )) = (((-(*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_64 * __pyx_v_balpha.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_65 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_66 * __pyx_v_a.strides[0]) ))));
+2792: B[3, m, 3, m] = alpha[m]*gA[m]*a[m]+(gIa[m]+tIa)*Ia[m]
__pyx_t_71 = __pyx_v_m;
__pyx_t_72 = __pyx_v_m;
__pyx_t_73 = __pyx_v_m;
__pyx_t_74 = __pyx_v_m;
__pyx_t_75 = __pyx_v_m;
__pyx_t_76 = 3;
__pyx_t_77 = __pyx_v_m;
__pyx_t_78 = 3;
__pyx_t_79 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_76 * __pyx_v_B.strides[0]) ) + __pyx_t_77 * __pyx_v_B.strides[1]) ) + __pyx_t_78 * __pyx_v_B.strides[2]) ) + __pyx_t_79 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_alpha.data + __pyx_t_71 * __pyx_v_alpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_72 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_73 * __pyx_v_a.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gIa.data + __pyx_t_74 * __pyx_v_gIa.strides[0]) ))) + __pyx_v_tIa) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_75 * __pyx_v_Ia.strides[0]) )))));
+2793: B[4, m, 4, m] = balpha[m]*gA[m]*a[m] + (gIs[m]+tIs)*Is[m]
__pyx_t_80 = __pyx_v_m;
__pyx_t_81 = __pyx_v_m;
__pyx_t_82 = __pyx_v_m;
__pyx_t_83 = __pyx_v_m;
__pyx_t_84 = __pyx_v_m;
__pyx_t_85 = 4;
__pyx_t_86 = __pyx_v_m;
__pyx_t_87 = 4;
__pyx_t_88 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_85 * __pyx_v_B.strides[0]) ) + __pyx_t_86 * __pyx_v_B.strides[1]) ) + __pyx_t_87 * __pyx_v_B.strides[2]) ) + __pyx_t_88 * __pyx_v_B.strides[3]) )) = ((((*((double *) ( /* dim=0 */ (__pyx_v_balpha.data + __pyx_t_80 * __pyx_v_balpha.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_gA.data + __pyx_t_81 * __pyx_v_gA.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_82 * __pyx_v_a.strides[0]) )))) + (((*((double *) ( /* dim=0 */ (__pyx_v_gIs.data + __pyx_t_83 * __pyx_v_gIs.strides[0]) ))) + __pyx_v_tIs) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_84 * __pyx_v_Is.strides[0]) )))));
+2794: B[1, m, 5, m] = -tE*e[m]
__pyx_t_89 = __pyx_v_m;
__pyx_t_90 = 1;
__pyx_t_91 = __pyx_v_m;
__pyx_t_92 = 5;
__pyx_t_93 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_90 * __pyx_v_B.strides[0]) ) + __pyx_t_91 * __pyx_v_B.strides[1]) ) + __pyx_t_92 * __pyx_v_B.strides[2]) ) + __pyx_t_93 * __pyx_v_B.strides[3]) )) = ((-__pyx_v_tE) * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_89 * __pyx_v_e.strides[0]) ))));
+2795: B[2, m, 5, m] = -tA*a[m]
__pyx_t_94 = __pyx_v_m;
__pyx_t_95 = 2;
__pyx_t_96 = __pyx_v_m;
__pyx_t_97 = 5;
__pyx_t_98 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_95 * __pyx_v_B.strides[0]) ) + __pyx_t_96 * __pyx_v_B.strides[1]) ) + __pyx_t_97 * __pyx_v_B.strides[2]) ) + __pyx_t_98 * __pyx_v_B.strides[3]) )) = ((-__pyx_v_tA) * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_94 * __pyx_v_a.strides[0]) ))));
+2796: B[3, m, 5, m] = -tIa*Ia[m]
__pyx_t_99 = __pyx_v_m;
__pyx_t_100 = 3;
__pyx_t_101 = __pyx_v_m;
__pyx_t_102 = 5;
__pyx_t_103 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_100 * __pyx_v_B.strides[0]) ) + __pyx_t_101 * __pyx_v_B.strides[1]) ) + __pyx_t_102 * __pyx_v_B.strides[2]) ) + __pyx_t_103 * __pyx_v_B.strides[3]) )) = ((-__pyx_v_tIa) * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_99 * __pyx_v_Ia.strides[0]) ))));
+2797: B[4, m, 5, m] = -tIs*Is[m]
__pyx_t_104 = __pyx_v_m;
__pyx_t_105 = 4;
__pyx_t_106 = __pyx_v_m;
__pyx_t_107 = 5;
__pyx_t_108 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_105 * __pyx_v_B.strides[0]) ) + __pyx_t_106 * __pyx_v_B.strides[1]) ) + __pyx_t_107 * __pyx_v_B.strides[2]) ) + __pyx_t_108 * __pyx_v_B.strides[3]) )) = ((-__pyx_v_tIs) * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_104 * __pyx_v_Is.strides[0]) ))));
+2798: B[5, m, 5, m] = tE*e[m]+tA*a[m]+tIa*Ia[m]+tIs*Is[m]
__pyx_t_109 = __pyx_v_m;
__pyx_t_110 = __pyx_v_m;
__pyx_t_111 = __pyx_v_m;
__pyx_t_112 = __pyx_v_m;
__pyx_t_113 = 5;
__pyx_t_114 = __pyx_v_m;
__pyx_t_115 = 5;
__pyx_t_116 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_113 * __pyx_v_B.strides[0]) ) + __pyx_t_114 * __pyx_v_B.strides[1]) ) + __pyx_t_115 * __pyx_v_B.strides[2]) ) + __pyx_t_116 * __pyx_v_B.strides[3]) )) = ((((__pyx_v_tE * (*((double *) ( /* dim=0 */ (__pyx_v_e.data + __pyx_t_109 * __pyx_v_e.strides[0]) )))) + (__pyx_v_tA * (*((double *) ( /* dim=0 */ (__pyx_v_a.data + __pyx_t_110 * __pyx_v_a.strides[0]) ))))) + (__pyx_v_tIa * (*((double *) ( /* dim=0 */ (__pyx_v_Ia.data + __pyx_t_111 * __pyx_v_Ia.strides[0]) ))))) + (__pyx_v_tIs * (*((double *) ( /* dim=0 */ (__pyx_v_Is.data + __pyx_t_112 * __pyx_v_Is.strides[0]) )))));
}
+2799: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_117 = PyTuple_New(2); if (unlikely(!__pyx_t_117)) __PYX_ERR(0, 2799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_117); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_117, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_117, 1, __pyx_t_12); __pyx_t_4 = 0; __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_11 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_12, __pyx_t_117) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_117); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_117); __pyx_t_117 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_9, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_9, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_117 = __Pyx_PyObject_GetItem(__pyx_t_11, __pyx_t_9); if (unlikely(!__pyx_t_117)) __PYX_ERR(0, 2799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_117); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (!(likely(((__pyx_t_117) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_117, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2799, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_117); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_117); __pyx_t_117 = 0;
2800:
2801:
2802:
2803:
2804: @cython.wraparound(False)
2805: @cython.boundscheck(False)
2806: @cython.cdivision(True)
2807: @cython.nonecheck(False)
+2808: cdef class Spp(SIR_type):
struct __pyx_obj_6pyross_9inference_Spp {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *constant_terms;
PyArrayObject *linear_terms;
PyArrayObject *infection_terms;
PyArrayObject *parameters;
PyObject *param_keys;
struct __pyx_obj_6pyross_13deterministic_Spp *det_model;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_Spp {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_Spp *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_Spp *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_Spp *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*obtain_time_evol_op_2)(struct __pyx_obj_6pyross_9inference_Spp *, __Pyx_memviewslice, __Pyx_memviewslice, double, double, PyObject *, PyObject *);
};
static struct __pyx_vtabstruct_6pyross_9inference_Spp *__pyx_vtabptr_6pyross_9inference_Spp;
2809: """User-defined epidemic model.
2810:
2811: To initialise the Spp model,
2812:
2813: Parameters
2814: ----------
2815: model_spec: dict
2816: A dictionary specifying the model. See `Examples`.
2817: parameters: dict
2818: A dictionary containing the model parameters.
2819: All parameters can be float if not age-dependent, and np.array(M,) if age-dependent
2820: M: int
2821: Number of age groups.
2822: fi: np.array(M) or list
2823: Fraction of each age group.
2824: N: int
2825: Total population.
2826: steps: int
2827: The number of internal integration steps performed between the observed points (not used in tangent space inference).
2828: The minimal is 4, as required by the cubic spline fit used for interpolation.
2829: For robustness, set steps to be large, det_method='LSODA', lyapunov_method='LSODA'.
2830: For speed, set steps to be 4, det_method='RK2', lyapunov_method='euler'.
2831: For a combination of the two, choose something in between.
2832: det_method: str, optional
2833: The integration method used for deterministic integration.
2834: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2835: lyapunov_method: str, optional
2836: The integration method used for the integration of the Lyapunov equation for the covariance.
2837: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
2838:
2839:
2840: See `SIR_type` for a table of all the methods
2841:
2842: Examples
2843: --------
2844: An example of model_spec and parameters for SIR class with a constant influx
2845:
2846: >>> model_spec = {
2847: "classes" : ["S", "I"],
2848: "S" : {
2849: "constant" : [ ["k"] ],
2850: "infection" : [ ["I", "-beta"] ]
2851: },
2852: "I" : {
2853: "linear" : [ ["I", "-gamma"] ],
2854: "infection" : [ ["I", "beta"] ]
2855: }
2856: }
2857: >>> parameters = {
2858: 'beta': 0.1,
2859: 'gamma': 0.1,
2860: 'k': 1,
2861: }
2862: """
2863:
2864: cdef:
+2865: readonly np.ndarray constant_terms, linear_terms, infection_terms
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_14constant_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_14constant_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_14constant_terms___get__(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_14constant_terms___get__(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->constant_terms));
__pyx_r = ((PyObject *)__pyx_v_self->constant_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_12linear_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_12linear_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_12linear_terms___get__(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_12linear_terms___get__(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->linear_terms));
__pyx_r = ((PyObject *)__pyx_v_self->linear_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_15infection_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_15infection_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_15infection_terms___get__(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_15infection_terms___get__(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->infection_terms));
__pyx_r = ((PyObject *)__pyx_v_self->infection_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2866: readonly np.ndarray parameters
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_10parameters_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_10parameters_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_10parameters___get__(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_10parameters___get__(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->parameters));
__pyx_r = ((PyObject *)__pyx_v_self->parameters);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2867: readonly list param_keys
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_10param_keys_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_10param_keys_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_10param_keys___get__(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_10param_keys___get__(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->param_keys);
__pyx_r = __pyx_v_self->param_keys;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2868: readonly pyross.deterministic.Spp det_model
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_9det_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_9det_model_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_9det_model___get__(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_9det_model___get__(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->det_model));
__pyx_r = ((PyObject *)__pyx_v_self->det_model);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2869:
2870:
+2871: def __init__(self, model_spec, parameters, M, fi, N, steps, det_method='LSODA', lyapunov_method='LSODA'):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_3Spp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_3Spp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_model_spec = 0;
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_N = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_model_spec,&__pyx_n_s_parameters,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_N,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
values[6] = ((PyObject *)__pyx_n_u_LSODA);
values[7] = ((PyObject *)__pyx_n_u_LSODA);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model_spec)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 1); __PYX_ERR(0, 2871, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 2); __PYX_ERR(0, 2871, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 3); __PYX_ERR(0, 2871, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 4); __PYX_ERR(0, 2871, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, 5); __PYX_ERR(0, 2871, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 2871, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_model_spec = values[0];
__pyx_v_parameters = values[1];
__pyx_v_M = values[2];
__pyx_v_fi = values[3];
__pyx_v_N = values[4];
__pyx_v_steps = values[5];
__pyx_v_det_method = values[6];
__pyx_v_lyapunov_method = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 6, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2871, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.Spp.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3Spp___init__(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), __pyx_v_model_spec, __pyx_v_parameters, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_3Spp___init__(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_model_spec, PyObject *__pyx_v_parameters, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_N, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method) {
PyObject *__pyx_v_res = NULL;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.Spp.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_res);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2872: self.param_keys = list(parameters.keys())
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_parameters, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2872, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2872, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2872, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->param_keys); __Pyx_DECREF(__pyx_v_self->param_keys); __pyx_v_self->param_keys = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+2873: res = pyross.utils.parse_model_spec(model_spec, self.param_keys)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_parse_model_spec); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_model_spec, __pyx_v_self->param_keys}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2873, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_model_spec, __pyx_v_self->param_keys}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2873, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_model_spec); __Pyx_GIVEREF(__pyx_v_model_spec); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_model_spec); __Pyx_INCREF(__pyx_v_self->param_keys); __Pyx_GIVEREF(__pyx_v_self->param_keys); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_self->param_keys); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2873, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_res = __pyx_t_2; __pyx_t_2 = 0;
+2874: self.nClass = res[0]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2874, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2874, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->__pyx_base.nClass = __pyx_t_6;
+2875: self.class_index_dict = res[1]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 2875, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+2876: self.constant_terms = res[2]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2876, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2876, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->constant_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->constant_terms)); __pyx_v_self->constant_terms = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+2877: self.linear_terms = res[3]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2877, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2877, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->linear_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->linear_terms)); __pyx_v_self->linear_terms = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+2878: self.infection_terms = res[4]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2878, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2878, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->infection_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->infection_terms)); __pyx_v_self->infection_terms = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+2879: super().__init__(parameters, self.nClass, M, fi, N, steps, det_method, lyapunov_method)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_Spp)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_Spp)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_Spp)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.nClass); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_t_5, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_t_5, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_7 = PyTuple_New(8+__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_N); __Pyx_GIVEREF(__pyx_v_N); PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_4, __pyx_v_N); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_7, 7+__pyx_t_4, __pyx_v_lyapunov_method); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2879, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2880: self.det_model = pyross.deterministic.Spp(model_spec, parameters, M, fi*N)
__pyx_t_2 = PyNumber_Multiply(__pyx_v_fi, __pyx_v_N); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_model_spec); __Pyx_GIVEREF(__pyx_v_model_spec); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_model_spec); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_parameters); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_M); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_Spp), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2880, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->det_model); __Pyx_DECREF(((PyObject *)__pyx_v_self->det_model)); __pyx_v_self->det_model = ((struct __pyx_obj_6pyross_13deterministic_Spp *)__pyx_t_2); __pyx_t_2 = 0;
2881:
+2882: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_2infection_indices(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_2infection_indices(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self) {
Py_ssize_t __pyx_v_a;
PyObject *__pyx_v_indices = NULL;
PyObject *__pyx_v_linear_terms_indices = NULL;
PyObject *__pyx_v_term = NULL;
PyObject *__pyx_v_infective_index = NULL;
PyObject *__pyx_v_temp = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_product_index = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.Spp.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_indices);
__Pyx_XDECREF(__pyx_v_linear_terms_indices);
__Pyx_XDECREF(__pyx_v_term);
__Pyx_XDECREF(__pyx_v_infective_index);
__Pyx_XDECREF(__pyx_v_temp);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_product_index);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2883: cdef Py_ssize_t a = 100
__pyx_v_a = 0x64;
+2884: indices = set()
__pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2884, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_indices = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+2885: linear_terms_indices = list(range(self.linear_terms.shape[0]))
__pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_self->linear_terms->dimensions[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2885, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_linear_terms_indices = __pyx_t_1; __pyx_t_1 = 0;
2886:
2887: # Find all the infection terms
+2888: for term in self.infection_terms:
if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self->infection_terms))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->infection_terms))) { __pyx_t_1 = ((PyObject *)__pyx_v_self->infection_terms); __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_self->infection_terms)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2888, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 2888, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 2888, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2888, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2888, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_term, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2889: infective_index = term[1]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_term, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2889, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_infective_index, __pyx_t_2); __pyx_t_2 = 0;
+2890: indices.add(infective_index)
__pyx_t_5 = PySet_Add(__pyx_v_indices, __pyx_v_infective_index); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2890, __pyx_L1_error)
2891:
2892: # Find all the terms that turn into infection terms
+2893: a = 100
__pyx_v_a = 0x64;
+2894: while a > 0:
while (1) {
__pyx_t_6 = ((__pyx_v_a > 0) != 0);
if (!__pyx_t_6) break;
+2895: a = 0
__pyx_v_a = 0;
+2896: temp = linear_terms_indices.copy()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_linear_terms_indices, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2896, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_temp, __pyx_t_1); __pyx_t_1 = 0;
+2897: for i in linear_terms_indices:
if (likely(PyList_CheckExact(__pyx_v_linear_terms_indices)) || PyTuple_CheckExact(__pyx_v_linear_terms_indices)) { __pyx_t_1 = __pyx_v_linear_terms_indices; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_linear_terms_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2897, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 2897, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 2897, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2897, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 2897, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2898: product_index = self.linear_terms[i, 2]
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_2); __pyx_t_7 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->linear_terms), __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2898, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_product_index, __pyx_t_7); __pyx_t_7 = 0;
+2899: if product_index in indices:
__pyx_t_6 = (__Pyx_PySet_ContainsTF(__pyx_v_product_index, __pyx_v_indices, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 2899, __pyx_L1_error) __pyx_t_8 = (__pyx_t_6 != 0); if (__pyx_t_8) { /* … */ }
+2900: indices.add(self.linear_terms[i, 1])
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_i); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_1); __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->linear_terms), __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2900, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_5 = PySet_Add(__pyx_v_indices, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2900, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2901: temp.pop(i)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_pop); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_v_i) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_i); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2901, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+2902: linear_terms_indices = temp
__Pyx_INCREF(__pyx_v_temp); __Pyx_DECREF_SET(__pyx_v_linear_terms_indices, __pyx_v_temp); }
+2903: return list(indices)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PySequence_List(__pyx_v_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2903, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
2904:
+2905: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_4set_params(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_4set_params(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_parameters) {
Py_ssize_t __pyx_v_nParams;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_param = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.Spp.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_param);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2906: nParams = len(self.param_keys)
__pyx_t_1 = __pyx_v_self->param_keys; __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 2906, __pyx_L1_error) } __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2906, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_nParams = __pyx_t_2;
+2907: self.parameters = np.empty((nParams, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_nParams); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2907, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->parameters); __Pyx_DECREF(((PyObject *)__pyx_v_self->parameters)); __pyx_v_self->parameters = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2908: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L8_try_end:;
}
+2909: for (i, key) in enumerate(self.param_keys):
__Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; __pyx_t_5 = __pyx_v_self->param_keys; __Pyx_INCREF(__pyx_t_5); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 2909, __pyx_L3_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2909, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2909, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_4; __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2910: param = parameters[key]
__pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_parameters, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2910, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_param, __pyx_t_4); __pyx_t_4 = 0;
+2911: self.parameters[i] = pyross.utils.age_dep_rates(param, self.M, key)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2911, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2911, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2911, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2911, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; __pyx_t_11 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_11 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_param, __pyx_t_9, __pyx_v_key}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 3+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2911, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_param, __pyx_t_9, __pyx_v_key}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 3+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2911, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_12 = PyTuple_New(3+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2911, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_param); __Pyx_GIVEREF(__pyx_v_param); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_v_param); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_t_9); __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_11, __pyx_v_key); __pyx_t_9 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2911, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->parameters), __pyx_v_i, __pyx_t_4) < 0)) __PYX_ERR(0, 2911, __pyx_L3_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2912: except KeyError:
__pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); if (__pyx_t_11) { __Pyx_AddTraceback("pyross.inference.Spp.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 2912, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4);
+2913: raise Exception('The parameters passed does not contain certain keys. The keys are {}'.format(self.param_keys))
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_The_parameters_passed_does_not_c, __pyx_n_s_format); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2913, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_9, __pyx_v_self->param_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_self->param_keys); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2913, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2913, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_12, 0, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(0, 2913, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:;
2914:
+2915: def make_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_7make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_7make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_6make_det_model(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_6make_det_model(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.Spp.make_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2916: # small hack to make this class work with SIR_type
+2917: self.det_model.update_model_parameters(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->det_model), __pyx_n_s_update_model_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2917, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+2918: return self.det_model
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_self->det_model)); __pyx_r = ((PyObject *)__pyx_v_self->det_model); goto __pyx_L0;
2919:
2920:
+2921: def make_params_dict(self, params=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_9make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_3Spp_9make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
CYTHON_UNUSED PyObject *__pyx_v_params = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,0};
PyObject* values[1] = {0};
values[0] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params);
if (value) { values[0] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "make_params_dict") < 0)) __PYX_ERR(0, 2921, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("make_params_dict", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2921, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.Spp.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_8make_params_dict(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), __pyx_v_params);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_8make_params_dict(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_params) {
PyObject *__pyx_v_param_dict = NULL;
PyObject *__pyx_8genexpr6__pyx_v_i = NULL;
PyObject *__pyx_8genexpr6__pyx_v_k = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.Spp.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_param_dict);
__Pyx_XDECREF(__pyx_8genexpr6__pyx_v_i);
__Pyx_XDECREF(__pyx_8genexpr6__pyx_v_k);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+2922: param_dict = {k:self.parameters[i] for (i, k) in enumerate(self.param_keys)}
{ /* enter inner scope */
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2922, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_int_0);
__pyx_t_2 = __pyx_int_0;
__pyx_t_3 = __pyx_v_self->param_keys; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
for (;;) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 2922, __pyx_L5_error)
#else
__pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2922, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_k, __pyx_t_5);
__pyx_t_5 = 0;
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_i, __pyx_t_2);
__pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2922, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2);
__pyx_t_2 = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->parameters), __pyx_8genexpr6__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2922, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr6__pyx_v_k, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 2922, __pyx_L5_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_8genexpr6__pyx_v_i); __pyx_8genexpr6__pyx_v_i = 0;
__Pyx_XDECREF(__pyx_8genexpr6__pyx_v_k); __pyx_8genexpr6__pyx_v_k = 0;
goto __pyx_L8_exit_scope;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_8genexpr6__pyx_v_i); __pyx_8genexpr6__pyx_v_i = 0;
__Pyx_XDECREF(__pyx_8genexpr6__pyx_v_k); __pyx_8genexpr6__pyx_v_k = 0;
goto __pyx_L1_error;
__pyx_L8_exit_scope:;
} /* exit inner scope */
__pyx_v_param_dict = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+2923: return param_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_param_dict); __pyx_r = __pyx_v_param_dict; goto __pyx_L0;
2924:
+2925: cdef np.ndarray _get_r_from_x(self, np.ndarray x):
static PyArrayObject *__pyx_f_6pyross_9inference_3Spp__get_r_from_x(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyArrayObject *__pyx_v_x) {
PyArrayObject *__pyx_v_r = 0;
PyArrayObject *__pyx_v_xrs = 0;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_get_r_from_x", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.Spp._get_r_from_x", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_r);
__Pyx_XDECREF((PyObject *)__pyx_v_xrs);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2926: cdef:
2927: np.ndarray r
+2928: np.ndarray xrs=x.reshape(int(self.dim/self.M), self.M)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_self->__pyx_base.dim / __pyx_v_self->__pyx_base.M)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2928, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2928, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2928, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2928, __pyx_L1_error) __pyx_v_xrs = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+2929: if self.constant_terms.size > 0:
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2929, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2929, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2929, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_8) { /* … */ goto __pyx_L3; }
+2930: r = xrs[-1,:] - np.sum(xrs[:-1,:], axis=0)
__pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_xrs), __pyx_tuple__37); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* … */ __pyx_tuple__37 = PyTuple_Pack(2, __pyx_int_neg_1, __pyx_slice__2); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__37); __Pyx_GIVEREF(__pyx_tuple__37); __pyx_slice__38 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__38)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_slice__38); __Pyx_GIVEREF(__pyx_slice__38); __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_xrs), __pyx_tuple__39); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 2930, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Subtract(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2930, __pyx_L1_error) __pyx_v_r = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0; __pyx_tuple__39 = PyTuple_Pack(2, __pyx_slice__38, __pyx_slice__2); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 2930, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__39); __Pyx_GIVEREF(__pyx_tuple__39);
2931: else:
+2932: r = self.fi - np.sum(xrs, axis=0)
/*else*/ {
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2932, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2932, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2932, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(((PyObject *)__pyx_v_xrs));
__Pyx_GIVEREF(((PyObject *)__pyx_v_xrs));
PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_xrs));
__pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2932, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 2932, __pyx_L1_error)
__pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2932, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyNumber_Subtract(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2932, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2932, __pyx_L1_error)
__pyx_v_r = ((PyArrayObject *)__pyx_t_2);
__pyx_t_2 = 0;
}
__pyx_L3:;
+2933: return r
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_r)); __pyx_r = __pyx_v_r; goto __pyx_L0;
2934:
+2935: cdef lyapunov_fun(self, double t, double [:] sig, spline):
static PyObject *__pyx_f_6pyross_9inference_3Spp_lyapunov_fun(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, double __pyx_v_t, __Pyx_memviewslice __pyx_v_sig, PyObject *__pyx_v_spline) {
__Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_nClass;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_num_of_infection_terms;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lyapunov_fun", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.Spp.lyapunov_fun", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2936: cdef:
+2937: double [:] x, fi=self.fi
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 2937, __pyx_L1_error) __pyx_v_fi = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+2938: Py_ssize_t nClass=self.nClass, M=self.M
__pyx_t_2 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_2; __pyx_t_2 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_2;
+2939: Py_ssize_t num_of_infection_terms=self.infection_terms.shape[0]
__pyx_v_num_of_infection_terms = (__pyx_v_self->infection_terms->dimensions[0]);
+2940: x = spline(t)
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2940, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_spline); __pyx_t_5 = __pyx_v_spline; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2940, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 2940, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_x = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+2941: cdef double [:, :] l=np.zeros((num_of_infection_terms, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_num_of_infection_terms); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 2941, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_l = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+2942: if self.constant_terms.size > 0:
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2942, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2942, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2942, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (__pyx_t_8) { /* … */ }
+2943: fi = x[(nClass-1)*M:]
__pyx_t_1.data = __pyx_v_x.data;
__pyx_t_1.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_1, 0);
__pyx_t_9 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_1,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_9,
((__pyx_v_nClass - 1) * __pyx_v_M),
0,
0,
1,
0,
0,
1) < 0))
{
__PYX_ERR(0, 2943, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__pyx_v_fi = __pyx_t_1;
__pyx_t_1.memview = NULL;
__pyx_t_1.data = NULL;
+2944: self.B = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_10); __pyx_t_6 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_10 = 0; __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2944, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B)); __pyx_v_self->__pyx_base.B = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
+2945: self.J = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_10 = 0; __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2945, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J)); __pyx_v_self->__pyx_base.J = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+2946: self.fill_lambdas(x, l)
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2946, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2947: self.jacobian(x, l)
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2947, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2948: self.noise_correlation(x, l)
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2948, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2949: self.compute_dsigdt(sig)
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.compute_dsigdt(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sig); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2949, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2950:
+2951: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t, contactMatrix,
static PyObject *__pyx_f_6pyross_9inference_3Spp_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, PyObject *__pyx_v_contactMatrix, struct __pyx_opt_args_6pyross_9inference_3Spp_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.Spp.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_3Spp_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+2952: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
Py_ssize_t __pyx_v_nClass;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_num_of_infection_terms;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
2953: cdef:
+2954: Py_ssize_t nClass=self.nClass, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+2955: Py_ssize_t num_of_infection_terms=self.infection_terms.shape[0]
__pyx_v_num_of_infection_terms = (__pyx_v_self->infection_terms->dimensions[0]);
+2956: double [:, :] l=np.zeros((num_of_infection_terms, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_num_of_infection_terms); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2956, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_l = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+2957: double [:] fi=self.fi
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 2957, __pyx_L1_error) __pyx_v_fi = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+2958: self.CM = contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_contactMatrix); __pyx_t_4 = __pyx_v_contactMatrix; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2958, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2958, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+2959: if self.constant_terms.size > 0:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2959, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2959, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2959, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_8) { /* … */ }
+2960: fi = x[(nClass-1)*M:]
__pyx_t_7.data = __pyx_v_x.data;
__pyx_t_7.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
__pyx_t_9 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_7,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_9,
((__pyx_v_nClass - 1) * __pyx_v_M),
0,
0,
1,
0,
0,
1) < 0))
{
__PYX_ERR(0, 2960, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__pyx_v_fi = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
+2961: self.fill_lambdas(x, l)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2961, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+2962: if b_matrix:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2962, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2963: self.B = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_11 = PyTuple_New(4); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 2, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 3, __pyx_t_10); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_3 = 0; __pyx_t_10 = 0; __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = 0; __pyx_t_11 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2963, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B)); __pyx_v_self->__pyx_base.B = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+2964: self.noise_correlation(x, l)
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2964, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+2965: if jacobian:
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 2965, __pyx_L1_error) if (__pyx_t_8) { /* … */ }
+2966: self.J = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_10); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_10 = 0; __pyx_t_2 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 2966, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J)); __pyx_v_self->__pyx_base.J = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+2967: self.jacobian(x, l)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2967, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2968:
+2969: cdef fill_lambdas(self, double [:] x, double [:, :] l):
static PyObject *__pyx_f_6pyross_9inference_3Spp_fill_lambdas(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_infection_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_infective_index;
Py_ssize_t __pyx_v_index;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_num_of_infection_terms;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__Pyx_AddTraceback("pyross.inference.Spp.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_infection_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2970: cdef:
+2971: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 2971, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+2972: int [:, :] infection_terms=self.infection_terms
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->infection_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 2972, __pyx_L1_error) __pyx_v_infection_terms = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
2973: double infection_rate
+2974: double [:] fi=self.fi
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2974, __pyx_L1_error) __pyx_v_fi = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+2975: Py_ssize_t m, n, i, infective_index, index, M=self.M, num_of_infection_terms=infection_terms.shape[0]
__pyx_t_4 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_4; __pyx_v_num_of_infection_terms = (__pyx_v_infection_terms.shape[0]);
+2976: for i in range(num_of_infection_terms):
__pyx_t_4 = __pyx_v_num_of_infection_terms;
__pyx_t_5 = __pyx_t_4;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_i = __pyx_t_6;
+2977: infective_index = infection_terms[i, 1]
__pyx_t_7 = __pyx_v_i;
__pyx_t_8 = 1;
__pyx_v_infective_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_7 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_8 * __pyx_v_infection_terms.strides[1]) )));
+2978: for m in range(M):
__pyx_t_9 = __pyx_v_M;
__pyx_t_10 = __pyx_t_9;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_m = __pyx_t_11;
+2979: for n in range(M):
__pyx_t_12 = __pyx_v_M;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_n = __pyx_t_14;
+2980: index = n + M*infective_index
__pyx_v_index = (__pyx_v_n + (__pyx_v_M * __pyx_v_infective_index));
+2981: l[i, m] += CM[m,n]*x[index]/fi[n]
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = __pyx_v_n;
__pyx_t_17 = __pyx_v_index;
__pyx_t_18 = __pyx_v_n;
__pyx_t_19 = __pyx_v_i;
__pyx_t_20 = __pyx_v_m;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_19 * __pyx_v_l.strides[0]) ) + __pyx_t_20 * __pyx_v_l.strides[1]) )) += (((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_15 * __pyx_v_CM.strides[0]) ) + __pyx_t_16 * __pyx_v_CM.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_18 * __pyx_v_fi.strides[0]) ))));
}
}
}
2982:
+2983: cdef jacobian(self, double [:] x, double [:, :] l):
static PyObject *__pyx_f_6pyross_9inference_3Spp_jacobian(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
Py_ssize_t __pyx_v_rate_index;
Py_ssize_t __pyx_v_infective_index;
Py_ssize_t __pyx_v_product_index;
Py_ssize_t __pyx_v_reagent_index;
Py_ssize_t __pyx_v_S_index;
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_parameters = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_linear_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_infection_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_rate = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__Pyx_XDECREF(__pyx_t_70);
__Pyx_XDECREF(__pyx_t_71);
__Pyx_XDECREF(__pyx_t_72);
__Pyx_XDECREF(__pyx_t_73);
__Pyx_AddTraceback("pyross.inference.Spp.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_parameters, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_linear_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_infection_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
2984: cdef:
+2985: Py_ssize_t i, m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+2986: Py_ssize_t rate_index, infective_index, product_index, reagent_index, S_index=self.class_index_dict['S']
if (unlikely(__pyx_v_self->__pyx_base.class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 2986, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_self->__pyx_base.class_index_dict, __pyx_n_u_S); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2986, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 2986, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_S_index = __pyx_t_1;
+2987: double [:, :, :, :] J = self.J
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 2987, __pyx_L1_error) __pyx_v_J = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+2988: double [:, :] CM=self.CM
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 2988, __pyx_L1_error) __pyx_v_CM = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+2989: double [:, :] parameters=self.parameters
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->parameters), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 2989, __pyx_L1_error) __pyx_v_parameters = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+2990: int [:, :] linear_terms=self.linear_terms, infection_terms=self.infection_terms
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->linear_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2990, __pyx_L1_error) __pyx_v_linear_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->infection_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 2990, __pyx_L1_error) __pyx_v_infection_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
2991: double [:] rate
+2992: double [:] fi=self.fi
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 2992, __pyx_L1_error) __pyx_v_fi = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
2993: # infection terms
+2994: for i in range(infection_terms.shape[0]):
__pyx_t_1 = (__pyx_v_infection_terms.shape[0]);
__pyx_t_7 = __pyx_t_1;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_i = __pyx_t_8;
+2995: product_index = infection_terms[i, 2]
__pyx_t_9 = __pyx_v_i;
__pyx_t_10 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_9 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_10 * __pyx_v_infection_terms.strides[1]) )));
+2996: infective_index = infection_terms[i, 1]
__pyx_t_11 = __pyx_v_i;
__pyx_t_12 = 1;
__pyx_v_infective_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_11 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_12 * __pyx_v_infection_terms.strides[1]) )));
+2997: rate_index = infection_terms[i, 0]
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_13 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_14 * __pyx_v_infection_terms.strides[1]) )));
+2998: rate = parameters[rate_index]
__pyx_t_6.data = __pyx_v_parameters.data;
__pyx_t_6.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 2998, __pyx_L1_error)
__pyx_t_6.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_6.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_6.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_6.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+2999: for m in range(M):
__pyx_t_15 = __pyx_v_M;
__pyx_t_16 = __pyx_t_15;
for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
__pyx_v_m = __pyx_t_17;
+3000: J[S_index, m, S_index, m] -= rate[m]*l[i, m]
__pyx_t_18 = __pyx_v_m;
__pyx_t_19 = __pyx_v_i;
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = __pyx_v_S_index;
__pyx_t_22 = __pyx_v_m;
__pyx_t_23 = __pyx_v_S_index;
__pyx_t_24 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_21 * __pyx_v_J.strides[0]) ) + __pyx_t_22 * __pyx_v_J.strides[1]) ) + __pyx_t_23 * __pyx_v_J.strides[2]) ) + __pyx_t_24 * __pyx_v_J.strides[3]) )) -= ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_18 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_19 * __pyx_v_l.strides[0]) ) + __pyx_t_20 * __pyx_v_l.strides[1]) ))));
+3001: if product_index>-1:
__pyx_t_25 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_25) {
/* … */
}
+3002: J[product_index, m, S_index, m] += rate[m]*l[i, m]
__pyx_t_26 = __pyx_v_m;
__pyx_t_27 = __pyx_v_i;
__pyx_t_28 = __pyx_v_m;
__pyx_t_29 = __pyx_v_product_index;
__pyx_t_30 = __pyx_v_m;
__pyx_t_31 = __pyx_v_S_index;
__pyx_t_32 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_29 * __pyx_v_J.strides[0]) ) + __pyx_t_30 * __pyx_v_J.strides[1]) ) + __pyx_t_31 * __pyx_v_J.strides[2]) ) + __pyx_t_32 * __pyx_v_J.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_26 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_27 * __pyx_v_l.strides[0]) ) + __pyx_t_28 * __pyx_v_l.strides[1]) ))));
+3003: for n in range(M):
__pyx_t_33 = __pyx_v_M;
__pyx_t_34 = __pyx_t_33;
for (__pyx_t_35 = 0; __pyx_t_35 < __pyx_t_34; __pyx_t_35+=1) {
__pyx_v_n = __pyx_t_35;
+3004: J[S_index, m, infective_index, n] -= x[S_index*M+m]*rate[m]*CM[m, n]/fi[n]
__pyx_t_36 = ((__pyx_v_S_index * __pyx_v_M) + __pyx_v_m);
__pyx_t_37 = __pyx_v_m;
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = __pyx_v_n;
__pyx_t_40 = __pyx_v_n;
__pyx_t_41 = __pyx_v_S_index;
__pyx_t_42 = __pyx_v_m;
__pyx_t_43 = __pyx_v_infective_index;
__pyx_t_44 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_41 * __pyx_v_J.strides[0]) ) + __pyx_t_42 * __pyx_v_J.strides[1]) ) + __pyx_t_43 * __pyx_v_J.strides[2]) ) + __pyx_t_44 * __pyx_v_J.strides[3]) )) -= ((((*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_36 * __pyx_v_x.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_37 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_38 * __pyx_v_CM.strides[0]) ) + __pyx_t_39 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_40 * __pyx_v_fi.strides[0]) ))));
+3005: if product_index>-1:
__pyx_t_25 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_25) {
/* … */
}
}
}
}
+3006: J[product_index, m, infective_index, n] += x[S_index*M+m]*rate[m]*CM[m, n]/fi[n]
__pyx_t_45 = ((__pyx_v_S_index * __pyx_v_M) + __pyx_v_m);
__pyx_t_46 = __pyx_v_m;
__pyx_t_47 = __pyx_v_m;
__pyx_t_48 = __pyx_v_n;
__pyx_t_49 = __pyx_v_n;
__pyx_t_50 = __pyx_v_product_index;
__pyx_t_51 = __pyx_v_m;
__pyx_t_52 = __pyx_v_infective_index;
__pyx_t_53 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_50 * __pyx_v_J.strides[0]) ) + __pyx_t_51 * __pyx_v_J.strides[1]) ) + __pyx_t_52 * __pyx_v_J.strides[2]) ) + __pyx_t_53 * __pyx_v_J.strides[3]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_45 * __pyx_v_x.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_46 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_47 * __pyx_v_CM.strides[0]) ) + __pyx_t_48 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_49 * __pyx_v_fi.strides[0]) ))));
+3007: for i in range(linear_terms.shape[0]):
__pyx_t_1 = (__pyx_v_linear_terms.shape[0]);
__pyx_t_7 = __pyx_t_1;
for (__pyx_t_8 = 0; __pyx_t_8 < __pyx_t_7; __pyx_t_8+=1) {
__pyx_v_i = __pyx_t_8;
+3008: product_index = linear_terms[i, 2]
__pyx_t_54 = __pyx_v_i;
__pyx_t_55 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_54 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_55 * __pyx_v_linear_terms.strides[1]) )));
+3009: reagent_index = linear_terms[i, 1]
__pyx_t_56 = __pyx_v_i;
__pyx_t_57 = 1;
__pyx_v_reagent_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_56 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_57 * __pyx_v_linear_terms.strides[1]) )));
+3010: rate_index = linear_terms[i, 0]
__pyx_t_58 = __pyx_v_i;
__pyx_t_59 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_58 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_59 * __pyx_v_linear_terms.strides[1]) )));
+3011: rate = parameters[rate_index]
__pyx_t_6.data = __pyx_v_parameters.data;
__pyx_t_6.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_6, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 3011, __pyx_L1_error)
__pyx_t_6.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_6.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_6.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_6.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_6;
__pyx_t_6.memview = NULL;
__pyx_t_6.data = NULL;
+3012: for m in range(M):
__pyx_t_15 = __pyx_v_M;
__pyx_t_16 = __pyx_t_15;
for (__pyx_t_17 = 0; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
__pyx_v_m = __pyx_t_17;
+3013: J[reagent_index, m, reagent_index, m] -= rate[m]
__pyx_t_60 = __pyx_v_m;
__pyx_t_61 = __pyx_v_reagent_index;
__pyx_t_62 = __pyx_v_m;
__pyx_t_63 = __pyx_v_reagent_index;
__pyx_t_64 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_61 * __pyx_v_J.strides[0]) ) + __pyx_t_62 * __pyx_v_J.strides[1]) ) + __pyx_t_63 * __pyx_v_J.strides[2]) ) + __pyx_t_64 * __pyx_v_J.strides[3]) )) -= (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_60 * __pyx_v_rate.strides[0]) )));
+3014: if product_index>-1:
__pyx_t_25 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_25) {
/* … */
}
}
}
+3015: J[product_index, m, reagent_index, m] += rate[m]
__pyx_t_65 = __pyx_v_m;
__pyx_t_66 = __pyx_v_product_index;
__pyx_t_67 = __pyx_v_m;
__pyx_t_68 = __pyx_v_reagent_index;
__pyx_t_69 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_66 * __pyx_v_J.strides[0]) ) + __pyx_t_67 * __pyx_v_J.strides[1]) ) + __pyx_t_68 * __pyx_v_J.strides[2]) ) + __pyx_t_69 * __pyx_v_J.strides[3]) )) += (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_65 * __pyx_v_rate.strides[0]) )));
+3016: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_70 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_70)) __PYX_ERR(0, 3016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_70); __pyx_t_71 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_71)) __PYX_ERR(0, 3016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_71); __pyx_t_72 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_72)) __PYX_ERR(0, 3016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_72); __pyx_t_73 = PyTuple_New(2); if (unlikely(!__pyx_t_73)) __PYX_ERR(0, 3016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_73); __Pyx_GIVEREF(__pyx_t_71); PyTuple_SET_ITEM(__pyx_t_73, 0, __pyx_t_71); __Pyx_GIVEREF(__pyx_t_72); PyTuple_SET_ITEM(__pyx_t_73, 1, __pyx_t_72); __pyx_t_71 = 0; __pyx_t_72 = 0; __pyx_t_72 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_70))) { __pyx_t_72 = PyMethod_GET_SELF(__pyx_t_70); if (likely(__pyx_t_72)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_70); __Pyx_INCREF(__pyx_t_72); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_70, function); } } __pyx_t_2 = (__pyx_t_72) ? __Pyx_PyObject_Call2Args(__pyx_t_70, __pyx_t_72, __pyx_t_73) : __Pyx_PyObject_CallOneArg(__pyx_t_70, __pyx_t_73); __Pyx_XDECREF(__pyx_t_72); __pyx_t_72 = 0; __Pyx_DECREF(__pyx_t_73); __pyx_t_73 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3016, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_70); __pyx_t_70 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3016, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
3017:
+3018: cdef noise_correlation(self, double [:] x, double [:, :] l):
static PyObject *__pyx_f_6pyross_9inference_3Spp_noise_correlation(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_l) {
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_nClass;
Py_ssize_t __pyx_v_class_index;
Py_ssize_t __pyx_v_rate_index;
CYTHON_UNUSED Py_ssize_t __pyx_v_infective_index;
Py_ssize_t __pyx_v_product_index;
Py_ssize_t __pyx_v_reagent_index;
Py_ssize_t __pyx_v_S_index;
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_parameters = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_constant_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_linear_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_infection_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_reagent = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_rate = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_N;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_98);
__Pyx_XDECREF(__pyx_t_99);
__Pyx_XDECREF(__pyx_t_100);
__Pyx_AddTraceback("pyross.inference.Spp.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_parameters, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_constant_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_linear_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_infection_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_reagent, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3019: cdef:
+3020: Py_ssize_t i, m, n, M=self.M, nClass=self.nClass, class_index
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_1;
+3021: Py_ssize_t rate_index, infective_index, product_index, reagent_index, S_index=self.class_index_dict['S']
if (unlikely(__pyx_v_self->__pyx_base.class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 3021, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_self->__pyx_base.class_index_dict, __pyx_n_u_S); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3021, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3021, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_S_index = __pyx_t_1;
+3022: double [:, :, :, :] B=self.B
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 3022, __pyx_L1_error) __pyx_v_B = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+3023: double [:, :] CM=self.CM
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3023, __pyx_L1_error) __pyx_v_CM = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+3024: double [:, :] parameters=self.parameters
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->parameters), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3024, __pyx_L1_error) __pyx_v_parameters = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+3025: int [:, :] constant_terms=self.constant_terms
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->constant_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3025, __pyx_L1_error) __pyx_v_constant_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+3026: int [:, :] linear_terms=self.linear_terms, infection_terms=self.infection_terms
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->linear_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3026, __pyx_L1_error) __pyx_v_linear_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->infection_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3026, __pyx_L1_error) __pyx_v_infection_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
3027: double [:] s, reagent, rate
+3028: double N=self.N
__pyx_t_6 = __pyx_v_self->__pyx_base.N; __pyx_v_N = __pyx_t_6;
+3029: s = x[S_index*M:(S_index+1)*M]
__pyx_t_7.data = __pyx_v_x.data;
__pyx_t_7.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
__pyx_t_8 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_7,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_8,
(__pyx_v_S_index * __pyx_v_M),
((__pyx_v_S_index + 1) * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 3029, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
3030:
+3031: if self.constant_terms.size > 0:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3031, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3031, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3031, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (__pyx_t_10) { /* … */ }
+3032: for i in range(constant_terms.shape[0]):
__pyx_t_1 = (__pyx_v_constant_terms.shape[0]);
__pyx_t_11 = __pyx_t_1;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+3033: rate_index = constant_terms[i, 0]
__pyx_t_13 = __pyx_v_i;
__pyx_t_14 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_constant_terms.data + __pyx_t_13 * __pyx_v_constant_terms.strides[0]) ) + __pyx_t_14 * __pyx_v_constant_terms.strides[1]) )));
+3034: class_index = constant_terms[i, 1]
__pyx_t_15 = __pyx_v_i;
__pyx_t_16 = 1;
__pyx_v_class_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_constant_terms.data + __pyx_t_15 * __pyx_v_constant_terms.strides[0]) ) + __pyx_t_16 * __pyx_v_constant_terms.strides[1]) )));
+3035: rate = parameters[rate_index]
__pyx_t_7.data = __pyx_v_parameters.data;
__pyx_t_7.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 3035, __pyx_L1_error)
__pyx_t_7.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_7.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_7.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_7.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
+3036: for m in range(M):
__pyx_t_17 = __pyx_v_M;
__pyx_t_18 = __pyx_t_17;
for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) {
__pyx_v_m = __pyx_t_19;
+3037: B[class_index, m, class_index, m] += rate[m]/N
__pyx_t_20 = __pyx_v_m;
__pyx_t_21 = __pyx_v_class_index;
__pyx_t_22 = __pyx_v_m;
__pyx_t_23 = __pyx_v_class_index;
__pyx_t_24 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_21 * __pyx_v_B.strides[0]) ) + __pyx_t_22 * __pyx_v_B.strides[1]) ) + __pyx_t_23 * __pyx_v_B.strides[2]) ) + __pyx_t_24 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_20 * __pyx_v_rate.strides[0]) ))) / __pyx_v_N);
+3038: B[nClass-1, m, nClass-1, m] += rate[m]/N
__pyx_t_25 = __pyx_v_m;
__pyx_t_26 = (__pyx_v_nClass - 1);
__pyx_t_27 = __pyx_v_m;
__pyx_t_28 = (__pyx_v_nClass - 1);
__pyx_t_29 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_26 * __pyx_v_B.strides[0]) ) + __pyx_t_27 * __pyx_v_B.strides[1]) ) + __pyx_t_28 * __pyx_v_B.strides[2]) ) + __pyx_t_29 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_25 * __pyx_v_rate.strides[0]) ))) / __pyx_v_N);
}
}
3039:
+3040: for i in range(infection_terms.shape[0]):
__pyx_t_1 = (__pyx_v_infection_terms.shape[0]);
__pyx_t_11 = __pyx_t_1;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+3041: product_index = infection_terms[i, 2]
__pyx_t_30 = __pyx_v_i;
__pyx_t_31 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_30 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_31 * __pyx_v_infection_terms.strides[1]) )));
+3042: infective_index = infection_terms[i, 1]
__pyx_t_32 = __pyx_v_i;
__pyx_t_33 = 1;
__pyx_v_infective_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_32 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_33 * __pyx_v_infection_terms.strides[1]) )));
+3043: rate_index = infection_terms[i, 0]
__pyx_t_34 = __pyx_v_i;
__pyx_t_35 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_34 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_35 * __pyx_v_infection_terms.strides[1]) )));
+3044: rate = parameters[rate_index]
__pyx_t_7.data = __pyx_v_parameters.data;
__pyx_t_7.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 3044, __pyx_L1_error)
__pyx_t_7.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_7.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_7.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_7.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
+3045: for m in range(M):
__pyx_t_17 = __pyx_v_M;
__pyx_t_18 = __pyx_t_17;
for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) {
__pyx_v_m = __pyx_t_19;
+3046: B[S_index, m, S_index, m] += rate[m]*l[i, m]*s[m]
__pyx_t_36 = __pyx_v_m;
__pyx_t_37 = __pyx_v_i;
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = __pyx_v_m;
__pyx_t_40 = __pyx_v_S_index;
__pyx_t_41 = __pyx_v_m;
__pyx_t_42 = __pyx_v_S_index;
__pyx_t_43 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_40 * __pyx_v_B.strides[0]) ) + __pyx_t_41 * __pyx_v_B.strides[1]) ) + __pyx_t_42 * __pyx_v_B.strides[2]) ) + __pyx_t_43 * __pyx_v_B.strides[3]) )) += (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_36 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_37 * __pyx_v_l.strides[0]) ) + __pyx_t_38 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_39 * __pyx_v_s.strides[0]) ))));
+3047: if product_index>-1:
__pyx_t_10 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_10) {
/* … */
}
}
}
+3048: B[S_index, m, product_index, m] -= rate[m]*l[i, m]*s[m]
__pyx_t_44 = __pyx_v_m;
__pyx_t_45 = __pyx_v_i;
__pyx_t_46 = __pyx_v_m;
__pyx_t_47 = __pyx_v_m;
__pyx_t_48 = __pyx_v_S_index;
__pyx_t_49 = __pyx_v_m;
__pyx_t_50 = __pyx_v_product_index;
__pyx_t_51 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_48 * __pyx_v_B.strides[0]) ) + __pyx_t_49 * __pyx_v_B.strides[1]) ) + __pyx_t_50 * __pyx_v_B.strides[2]) ) + __pyx_t_51 * __pyx_v_B.strides[3]) )) -= (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_44 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_45 * __pyx_v_l.strides[0]) ) + __pyx_t_46 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_47 * __pyx_v_s.strides[0]) ))));
+3049: B[product_index, m, product_index, m] += rate[m]*l[i, m]*s[m]
__pyx_t_52 = __pyx_v_m;
__pyx_t_53 = __pyx_v_i;
__pyx_t_54 = __pyx_v_m;
__pyx_t_55 = __pyx_v_m;
__pyx_t_56 = __pyx_v_product_index;
__pyx_t_57 = __pyx_v_m;
__pyx_t_58 = __pyx_v_product_index;
__pyx_t_59 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_56 * __pyx_v_B.strides[0]) ) + __pyx_t_57 * __pyx_v_B.strides[1]) ) + __pyx_t_58 * __pyx_v_B.strides[2]) ) + __pyx_t_59 * __pyx_v_B.strides[3]) )) += (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_52 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_53 * __pyx_v_l.strides[0]) ) + __pyx_t_54 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_55 * __pyx_v_s.strides[0]) ))));
+3050: B[product_index, m, S_index, m] -= rate[m]*l[i, m]*s[m]
__pyx_t_60 = __pyx_v_m;
__pyx_t_61 = __pyx_v_i;
__pyx_t_62 = __pyx_v_m;
__pyx_t_63 = __pyx_v_m;
__pyx_t_64 = __pyx_v_product_index;
__pyx_t_65 = __pyx_v_m;
__pyx_t_66 = __pyx_v_S_index;
__pyx_t_67 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_64 * __pyx_v_B.strides[0]) ) + __pyx_t_65 * __pyx_v_B.strides[1]) ) + __pyx_t_66 * __pyx_v_B.strides[2]) ) + __pyx_t_67 * __pyx_v_B.strides[3]) )) -= (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_60 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_61 * __pyx_v_l.strides[0]) ) + __pyx_t_62 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_63 * __pyx_v_s.strides[0]) ))));
3051:
+3052: for i in range(linear_terms.shape[0]):
__pyx_t_1 = (__pyx_v_linear_terms.shape[0]);
__pyx_t_11 = __pyx_t_1;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+3053: product_index = linear_terms[i, 2]
__pyx_t_68 = __pyx_v_i;
__pyx_t_69 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_68 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_69 * __pyx_v_linear_terms.strides[1]) )));
+3054: reagent_index = linear_terms[i, 1]
__pyx_t_70 = __pyx_v_i;
__pyx_t_71 = 1;
__pyx_v_reagent_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_70 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_71 * __pyx_v_linear_terms.strides[1]) )));
+3055: reagent = x[reagent_index*M:(reagent_index+1)*M]
__pyx_t_7.data = __pyx_v_x.data;
__pyx_t_7.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
__pyx_t_8 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_7,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_8,
(__pyx_v_reagent_index * __pyx_v_M),
((__pyx_v_reagent_index + 1) * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 3055, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_reagent, 1);
__pyx_v_reagent = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
+3056: rate_index = linear_terms[i, 0]
__pyx_t_72 = __pyx_v_i;
__pyx_t_73 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_72 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_73 * __pyx_v_linear_terms.strides[1]) )));
+3057: rate = parameters[rate_index]
__pyx_t_7.data = __pyx_v_parameters.data;
__pyx_t_7.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 3057, __pyx_L1_error)
__pyx_t_7.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_7.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_7.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_7.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
+3058: for m in range(M): # only fill in the upper triangular form
__pyx_t_17 = __pyx_v_M;
__pyx_t_18 = __pyx_t_17;
for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) {
__pyx_v_m = __pyx_t_19;
+3059: B[reagent_index, m, reagent_index, m] += rate[m]*reagent[m]
__pyx_t_74 = __pyx_v_m;
__pyx_t_75 = __pyx_v_m;
__pyx_t_76 = __pyx_v_reagent_index;
__pyx_t_77 = __pyx_v_m;
__pyx_t_78 = __pyx_v_reagent_index;
__pyx_t_79 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_76 * __pyx_v_B.strides[0]) ) + __pyx_t_77 * __pyx_v_B.strides[1]) ) + __pyx_t_78 * __pyx_v_B.strides[2]) ) + __pyx_t_79 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_74 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_75 * __pyx_v_reagent.strides[0]) ))));
+3060: if product_index>-1:
__pyx_t_10 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_10) {
/* … */
}
}
}
+3061: B[product_index, m, product_index, m] += rate[m]*reagent[m]
__pyx_t_80 = __pyx_v_m;
__pyx_t_81 = __pyx_v_m;
__pyx_t_82 = __pyx_v_product_index;
__pyx_t_83 = __pyx_v_m;
__pyx_t_84 = __pyx_v_product_index;
__pyx_t_85 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_82 * __pyx_v_B.strides[0]) ) + __pyx_t_83 * __pyx_v_B.strides[1]) ) + __pyx_t_84 * __pyx_v_B.strides[2]) ) + __pyx_t_85 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_80 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_81 * __pyx_v_reagent.strides[0]) ))));
+3062: B[reagent_index, m, product_index, m] += -rate[m]*reagent[m]
__pyx_t_86 = __pyx_v_m;
__pyx_t_87 = __pyx_v_m;
__pyx_t_88 = __pyx_v_reagent_index;
__pyx_t_89 = __pyx_v_m;
__pyx_t_90 = __pyx_v_product_index;
__pyx_t_91 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_88 * __pyx_v_B.strides[0]) ) + __pyx_t_89 * __pyx_v_B.strides[1]) ) + __pyx_t_90 * __pyx_v_B.strides[2]) ) + __pyx_t_91 * __pyx_v_B.strides[3]) )) += ((-(*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_86 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_87 * __pyx_v_reagent.strides[0]) ))));
+3063: B[product_index, m, reagent_index, m] += -rate[m]*reagent[m]
__pyx_t_92 = __pyx_v_m;
__pyx_t_93 = __pyx_v_m;
__pyx_t_94 = __pyx_v_product_index;
__pyx_t_95 = __pyx_v_m;
__pyx_t_96 = __pyx_v_reagent_index;
__pyx_t_97 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_94 * __pyx_v_B.strides[0]) ) + __pyx_t_95 * __pyx_v_B.strides[1]) ) + __pyx_t_96 * __pyx_v_B.strides[2]) ) + __pyx_t_97 * __pyx_v_B.strides[3]) )) += ((-(*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_92 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_93 * __pyx_v_reagent.strides[0]) ))));
+3064: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_98 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_98)) __PYX_ERR(0, 3064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_98); __pyx_t_99 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_99)) __PYX_ERR(0, 3064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_99); __pyx_t_100 = PyTuple_New(2); if (unlikely(!__pyx_t_100)) __PYX_ERR(0, 3064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_100); __Pyx_GIVEREF(__pyx_t_98); PyTuple_SET_ITEM(__pyx_t_100, 0, __pyx_t_98); __Pyx_GIVEREF(__pyx_t_99); PyTuple_SET_ITEM(__pyx_t_100, 1, __pyx_t_99); __pyx_t_98 = 0; __pyx_t_99 = 0; __pyx_t_99 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_99 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_99)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_99); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_9 = (__pyx_t_99) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_99, __pyx_t_100) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_100); __Pyx_XDECREF(__pyx_t_99); __pyx_t_99 = 0; __Pyx_DECREF(__pyx_t_100); __pyx_t_100 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_100 = __Pyx_PyObject_GetItem(__pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_100)) __PYX_ERR(0, 3064, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_100); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_100) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_100, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3064, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_100); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_100); __pyx_t_100 = 0;
3065:
+3066: def adj_RHS_mean(self, double t, double [:] lam, double [:] x0, contactMatrix, spline):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_11adj_RHS_mean(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_10adj_RHS_mean[] = "RHS function for the adjoint gradient calculation of the time evolution operator.";
static PyObject *__pyx_pw_6pyross_9inference_3Spp_11adj_RHS_mean(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
double __pyx_v_t;
__Pyx_memviewslice __pyx_v_lam = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_spline = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("adj_RHS_mean (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_t,&__pyx_n_s_lam,&__pyx_n_s_x0,&__pyx_n_s_contactMatrix,&__pyx_n_s_spline,0};
PyObject* values[5] = {0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lam)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("adj_RHS_mean", 1, 5, 5, 1); __PYX_ERR(0, 3066, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("adj_RHS_mean", 1, 5, 5, 2); __PYX_ERR(0, 3066, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("adj_RHS_mean", 1, 5, 5, 3); __PYX_ERR(0, 3066, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_spline)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("adj_RHS_mean", 1, 5, 5, 4); __PYX_ERR(0, 3066, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adj_RHS_mean") < 0)) __PYX_ERR(0, 3066, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
}
__pyx_v_t = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_t == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3066, __pyx_L3_error)
__pyx_v_lam = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[1], PyBUF_WRITABLE); if (unlikely(!__pyx_v_lam.memview)) __PYX_ERR(0, 3066, __pyx_L3_error)
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[2], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 3066, __pyx_L3_error)
__pyx_v_contactMatrix = values[3];
__pyx_v_spline = values[4];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("adj_RHS_mean", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3066, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.Spp.adj_RHS_mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_10adj_RHS_mean(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), __pyx_v_t, __pyx_v_lam, __pyx_v_x0, __pyx_v_contactMatrix, __pyx_v_spline);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_10adj_RHS_mean(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, double __pyx_v_t, __Pyx_memviewslice __pyx_v_lam, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_x0, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_spline) {
CYTHON_UNUSED Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_num_of_infection_terms;
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_fsa = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_beta = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_x = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("adj_RHS_mean", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.Spp.adj_RHS_mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fsa, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_beta, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XDECREF(__pyx_v_x);
__PYX_XDEC_MEMVIEW(&__pyx_v_lam, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3067: """RHS function for the adjoint gradient calculation of the time evolution operator."""
3068: cdef:
+3069: Py_ssize_t M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+3070: Py_ssize_t num_of_infection_terms=self.infection_terms.shape[0]
__pyx_v_num_of_infection_terms = (__pyx_v_self->infection_terms->dimensions[0]);
+3071: double [:, :] CM=self.CM
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 3071, __pyx_L1_error) __pyx_v_CM = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+3072: double [:, :] l=np.zeros((num_of_infection_terms, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_num_of_infection_terms); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 3072, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_l = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+3073: double [:] fsa=self.fsa, beta=self.beta, fi=self.fi
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fsa), PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3073, __pyx_L1_error) __pyx_v_fsa = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.beta), PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3073, __pyx_L1_error) __pyx_v_beta = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3073, __pyx_L1_error) __pyx_v_fi = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+3074: CM = contactMatrix(t)
__pyx_t_6 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3074, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_contactMatrix); __pyx_t_5 = __pyx_v_contactMatrix; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3074, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 3074, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1); __pyx_v_CM = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+3075: self.CM = contactMatrix(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_contactMatrix); __pyx_t_6 = __pyx_v_contactMatrix; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3075, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3075, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+3076: x = spline(t)
__pyx_t_6 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_spline); __pyx_t_5 = __pyx_v_spline; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3076, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_x = __pyx_t_3; __pyx_t_3 = 0;
+3077: self.fill_lambdas(x, l)
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3077, __pyx_L1_error) __pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_t_7, __pyx_v_l); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3077, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3078: self.jacobian(x, l)
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_x, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3078, __pyx_L1_error) __pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_t_7, __pyx_v_l); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3078, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3079: return np.dot(lam.T, self.J_mat )
__Pyx_XDECREF(__pyx_r); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_dot); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = __pyx_v_lam; __PYX_INC_MEMVIEW(&__pyx_t_7, 1); if (unlikely(__pyx_memslice_transpose(&__pyx_t_7) == 0)) __PYX_ERR(0, 3079, __pyx_L1_error) __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_t_7, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __PYX_XDEC_MEMVIEW(&__pyx_t_7, 1); __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL; __pyx_t_4 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, ((PyObject *)__pyx_v_self->__pyx_base.J_mat)}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3079, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_5, ((PyObject *)__pyx_v_self->__pyx_base.J_mat)}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3079, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_5); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, ((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_t_5 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3079, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
3080:
+3081: cdef obtain_time_evol_op_2(self, double [:] x0, double [:] xf, double t1, double t2, model, contactMatrix):
static PyObject *__pyx_f_6pyross_9inference_3Spp_obtain_time_evol_op_2(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, CYTHON_UNUSED __Pyx_memviewslice __pyx_v_xf, double __pyx_v_t1, double __pyx_v_t2, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix) {
Py_ssize_t __pyx_v_steps;
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_U = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_v_x = NULL;
PyObject *__pyx_v_tsteps = NULL;
PyObject *__pyx_v_spline = NULL;
PyObject *__pyx_v_k = NULL;
PyObject *__pyx_v_row = NULL;
PyObject *__pyx_v_a = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("obtain_time_evol_op_2", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_AddTraceback("pyross.inference.Spp.obtain_time_evol_op_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_U, 1);
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XDECREF(__pyx_v_tsteps);
__Pyx_XDECREF(__pyx_v_spline);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XDECREF(__pyx_v_row);
__Pyx_XDECREF(__pyx_v_a);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3082: """
3083: xf is a redundant input here, added for consistency with the finite difference version 'obtain_time_evol_op'
3084: """
3085: cdef:
+3086: Py_ssize_t steps=self.steps
__pyx_t_1 = __pyx_v_self->__pyx_base.steps; __pyx_v_steps = __pyx_t_1;
+3087: double [:,:] U=self.U
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.U), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 3087, __pyx_L1_error) __pyx_v_U = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
3088: double [:,:] lam_arr
3089: ## Interpolate the dynamics
+3090: x = self.integrate(x0, t1, t2, steps, model, contactMatrix)
__pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8, __pyx_v_model, __pyx_v_contactMatrix}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3090, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[7] = {__pyx_t_9, __pyx_t_5, __pyx_t_6, __pyx_t_7, __pyx_t_8, __pyx_v_model, __pyx_v_contactMatrix}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_10, 6+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3090, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_v_model); __Pyx_GIVEREF(__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_v_model); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_v_contactMatrix); __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3090, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_x = __pyx_t_3; __pyx_t_3 = 0;
+3091: tsteps = np.linspace(0, t2-t1, steps)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3091, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_linspace); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3091, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyFloat_FromDouble((__pyx_v_t2 - __pyx_v_t1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3091, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3091, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_int_0, __pyx_t_4, __pyx_t_8}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3091, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_int_0, __pyx_t_4, __pyx_t_8}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3091, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_6 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3091, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_10, __pyx_t_8); __pyx_t_4 = 0; __pyx_t_8 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3091, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_tsteps = __pyx_t_3; __pyx_t_3 = 0;
+3092: spline = make_interp_spline(tsteps, x)
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_make_interp_spline); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3092, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_6 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_11))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_11, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_tsteps, __pyx_v_x}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3092, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_11)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_tsteps, __pyx_v_x}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_11, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3092, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3092, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_tsteps); __Pyx_GIVEREF(__pyx_v_tsteps); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_v_tsteps); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_v_x); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3092, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __pyx_v_spline = __pyx_t_3; __pyx_t_3 = 0;
+3093: for k, row in enumerate(np.eye(self.dim)):
__Pyx_INCREF(__pyx_int_0); __pyx_t_3 = __pyx_int_0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_eye); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_11 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) { __pyx_t_6 = __pyx_t_11; __Pyx_INCREF(__pyx_t_6); __pyx_t_1 = 0; __pyx_t_12 = NULL; } else { __pyx_t_1 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3093, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_6))) { if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_11 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_11); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 3093, __pyx_L1_error) #else __pyx_t_11 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif } else { if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_6)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_11); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(0, 3093, __pyx_L1_error) #else __pyx_t_11 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); #endif } } else { __pyx_t_11 = __pyx_t_12(__pyx_t_6); if (unlikely(!__pyx_t_11)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3093, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_11); } __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_11); __pyx_t_11 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3); __pyx_t_11 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3093, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_11; __pyx_t_11 = 0; /* … */ } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3094: a = solve_ivp(self.adj_RHS_mean, [0,t2-t1], row, t_eval=tsteps, method='RK45', args=(x0,contactMatrix, spline,))
__Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_solve_ivp); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_adj_RHS_mean); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = PyFloat_FromDouble((__pyx_v_t2 - __pyx_v_t1)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyList_SET_ITEM(__pyx_t_7, 0, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_4); PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_7); __Pyx_INCREF(__pyx_v_row); __Pyx_GIVEREF(__pyx_v_row); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_row); __pyx_t_8 = 0; __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_t_eval, __pyx_v_tsteps) < 0) __PYX_ERR(0, 3094, __pyx_L1_error) if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_method, __pyx_n_u_RK45) < 0) __PYX_ERR(0, 3094, __pyx_L1_error) __pyx_t_8 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_spline); __Pyx_GIVEREF(__pyx_v_spline); PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_spline); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_args, __pyx_t_5) < 0) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3094, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_5); __pyx_t_5 = 0;
+3095: self.U[k,:] = a['y'][:,-1]
__pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_a, __pyx_n_u_y); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3095, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_t_5, __pyx_tuple__40); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3095, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3095, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_k); __Pyx_GIVEREF(__pyx_v_k); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_k); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_slice__2); if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->__pyx_base.U), __pyx_t_5, __pyx_t_7) < 0)) __PYX_ERR(0, 3095, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* … */ __pyx_tuple__40 = PyTuple_Pack(2, __pyx_slice__2, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(0, 3095, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__40); __Pyx_GIVEREF(__pyx_tuple__40);
+3096: return self.U
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.U)); __pyx_r = ((PyObject *)__pyx_v_self->__pyx_base.U); goto __pyx_L0;
3097:
+3098: def lambdify_derivative_functions(self, keys):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_13lambdify_derivative_functions(PyObject *__pyx_v_self, PyObject *__pyx_v_keys); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_12lambdify_derivative_functions[] = "Create python functions from sympy expressions";
static PyObject *__pyx_pw_6pyross_9inference_3Spp_13lambdify_derivative_functions(PyObject *__pyx_v_self, PyObject *__pyx_v_keys) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lambdify_derivative_functions (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_12lambdify_derivative_functions(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), ((PyObject *)__pyx_v_keys));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_12lambdify_derivative_functions(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_keys) {
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_nClass;
PyArrayObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_p = NULL;
PyObject *__pyx_v_CM = NULL;
PyObject *__pyx_v_fi = NULL;
PyObject *__pyx_v_x = NULL;
PyObject *__pyx_v_expr_var_list = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lambdify_derivative_functions", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("pyross.inference.Spp.lambdify_derivative_functions", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_p);
__Pyx_XDECREF(__pyx_v_CM);
__Pyx_XDECREF(__pyx_v_fi);
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XDECREF(__pyx_v_expr_var_list);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3099: """Create python functions from sympy expressions"""
+3100: M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+3101: nClass=self.nClass
__pyx_t_1 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_1;
+3102: parameters=self.parameters
__pyx_t_2 = ((PyObject *)__pyx_v_self->parameters);
__Pyx_INCREF(__pyx_t_2);
__pyx_v_parameters = ((PyArrayObject *)__pyx_t_2);
__pyx_t_2 = 0;
+3103: p = sympy.Matrix( sympy.symarray('p', (parameters.shape[0], parameters.shape[1]) )) ## epi-p only
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sympy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sympy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_symarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[1])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7); __pyx_t_5 = 0; __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_n_u_p, __pyx_t_8}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_n_u_p, __pyx_t_8}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_n_u_p); __Pyx_GIVEREF(__pyx_n_u_p); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_n_u_p); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_8); __pyx_t_8 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_p = __pyx_t_2; __pyx_t_2 = 0;
+3104: CM = sympy.Matrix( sympy.symarray('CM', (M, M)))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sympy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_sympy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_symarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_8); __pyx_t_6 = 0; __pyx_t_8 = 0; __pyx_t_8 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_CM, __pyx_t_7}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_CM, __pyx_t_7}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_n_u_CM); __Pyx_GIVEREF(__pyx_n_u_CM); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_n_u_CM); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_CM = __pyx_t_2; __pyx_t_2 = 0;
+3105: fi = sympy.Matrix( sympy.symarray('fi', (1, M)))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sympy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sympy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_symarray); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_int_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_n_u_fi, __pyx_t_7}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_n_u_fi, __pyx_t_7}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_n_u_fi); __Pyx_GIVEREF(__pyx_n_u_fi); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_n_u_fi); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3105, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_fi = __pyx_t_2; __pyx_t_2 = 0;
+3106: x=sympy.Matrix( sympy.symarray('x', (nClass, M)))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sympy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_sympy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_symarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_7); __pyx_t_6 = 0; __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_n_u_x, __pyx_t_5}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_n_u_x, __pyx_t_5}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_n_u_x); __Pyx_GIVEREF(__pyx_n_u_x); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_9, __pyx_n_u_x); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_9, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_8, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_x = __pyx_t_2; __pyx_t_2 = 0;
+3107: expr_var_list = [p, CM, fi, x]
__pyx_t_2 = PyList_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_p); __Pyx_GIVEREF(__pyx_v_p); PyList_SET_ITEM(__pyx_t_2, 0, __pyx_v_p); __Pyx_INCREF(__pyx_v_CM); __Pyx_GIVEREF(__pyx_v_CM); PyList_SET_ITEM(__pyx_t_2, 1, __pyx_v_CM); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyList_SET_ITEM(__pyx_t_2, 2, __pyx_v_fi); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyList_SET_ITEM(__pyx_t_2, 3, __pyx_v_x); __pyx_v_expr_var_list = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
3108: global dA, dB
+3109: dA = sympy.lambdify(expr_var_list, self.dAd(p, keys=keys))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sympy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_lambdify); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dAd); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_p); __Pyx_GIVEREF(__pyx_v_p); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_p); __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 3109, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_expr_var_list, __pyx_t_5}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_expr_var_list, __pyx_t_5}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_expr_var_list); __Pyx_GIVEREF(__pyx_v_expr_var_list); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_9, __pyx_v_expr_var_list); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_9, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_dA, __pyx_t_2) < 0) __PYX_ERR(0, 3109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3110: dB = sympy.lambdify(expr_var_list, self.dBd(p, keys=keys))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sympy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_lambdify); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_dBd); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_p); __Pyx_GIVEREF(__pyx_v_p); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_p); __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_keys, __pyx_v_keys) < 0) __PYX_ERR(0, 3110, __pyx_L1_error) __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_expr_var_list, __pyx_t_3}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_v_expr_var_list, __pyx_t_3}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_v_expr_var_list); __Pyx_GIVEREF(__pyx_v_expr_var_list); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_9, __pyx_v_expr_var_list); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_9, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (PyDict_SetItem(__pyx_d, __pyx_n_s_dB, __pyx_t_2) < 0) __PYX_ERR(0, 3110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3111:
+3112: def FIM_sym(self,x0, t1, t2, Nf, model, C, keys=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_15FIM_sym(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_14FIM_sym[] = "Does the FIM based off symbolic expressions. In development,";
static PyObject *__pyx_pw_6pyross_9inference_3Spp_15FIM_sym(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_x0 = 0;
PyObject *__pyx_v_t1 = 0;
PyObject *__pyx_v_t2 = 0;
PyObject *__pyx_v_Nf = 0;
PyObject *__pyx_v_model = 0;
PyObject *__pyx_v_C = 0;
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM_sym (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_t1,&__pyx_n_s_t2,&__pyx_n_s_Nf,&__pyx_n_s_model,&__pyx_n_s_C,&__pyx_n_s_keys,0};
PyObject* values[7] = {0,0,0,0,0,0,0};
values[6] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_sym", 0, 6, 7, 1); __PYX_ERR(0, 3112, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_sym", 0, 6, 7, 2); __PYX_ERR(0, 3112, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_Nf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_sym", 0, 6, 7, 3); __PYX_ERR(0, 3112, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_sym", 0, 6, 7, 4); __PYX_ERR(0, 3112, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("FIM_sym", 0, 6, 7, 5); __PYX_ERR(0, 3112, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys);
if (value) { values[6] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "FIM_sym") < 0)) __PYX_ERR(0, 3112, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x0 = values[0];
__pyx_v_t1 = values[1];
__pyx_v_t2 = values[2];
__pyx_v_Nf = values[3];
__pyx_v_model = values[4];
__pyx_v_C = values[5];
__pyx_v_keys = values[6];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("FIM_sym", 0, 6, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3112, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.Spp.FIM_sym", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_14FIM_sym(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), __pyx_v_x0, __pyx_v_t1, __pyx_v_t2, __pyx_v_Nf, __pyx_v_model, __pyx_v_C, __pyx_v_keys);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
static PyObject *__pyx_pf_6pyross_9inference_3Spp_14FIM_sym(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_x0, PyObject *__pyx_v_t1, PyObject *__pyx_v_t2, PyObject *__pyx_v_Nf, PyObject *__pyx_v_model, PyObject *__pyx_v_C, PyObject *__pyx_v_keys) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_9_FIM_sym *__pyx_cur_scope;
PyObject *__pyx_v_dmudp = 0;
Py_ssize_t __pyx_v_M;
CYTHON_UNUSED Py_ssize_t __pyx_v_nClass;
npy_intp __pyx_v_num_of_infection_terms;
PyArrayObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_xd = NULL;
PyObject *__pyx_v_time_points = NULL;
PyObject *__pyx_v_dt = NULL;
PyObject *__pyx_v_l = NULL;
PyObject *__pyx_v_FIM = NULL;
PyObject *__pyx_v_indices = NULL;
PyObject *__pyx_v_k = NULL;
PyObject *__pyx_v_xi = NULL;
CYTHON_UNUSED PyObject *__pyx_v_xf = NULL;
PyObject *__pyx_v_ti = NULL;
PyObject *__pyx_v_tf = NULL;
PyObject *__pyx_v_Bmat = NULL;
PyObject *__pyx_v_Binv = NULL;
PyObject *__pyx_v_dtan = NULL;
PyObject *__pyx_v_dAdx = NULL;
PyObject *__pyx_v_dcov = NULL;
PyObject *__pyx_v_dBdx = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_dcov_i = NULL;
PyObject *__pyx_v_dBdx_i = NULL;
PyObject *__pyx_v_U = NULL;
PyObject *__pyx_v_dtandx0 = NULL;
PyObject *__pyx_v_dcovdx0 = NULL;
PyObject *__pyx_v_dmu = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("FIM_sym", 0);
__pyx_cur_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_9_FIM_sym *)__pyx_tp_new_6pyross_9inference___pyx_scope_struct_9_FIM_sym(__pyx_ptype_6pyross_9inference___pyx_scope_struct_9_FIM_sym, __pyx_empty_tuple, NULL);
if (unlikely(!__pyx_cur_scope)) {
__pyx_cur_scope = ((struct __pyx_obj_6pyross_9inference___pyx_scope_struct_9_FIM_sym *)Py_None);
__Pyx_INCREF(Py_None);
__PYX_ERR(0, 3112, __pyx_L1_error)
} else {
__Pyx_GOTREF(__pyx_cur_scope);
}
__pyx_cur_scope->__pyx_v_self = __pyx_v_self;
__Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
__pyx_cur_scope->__pyx_v_x0 = __pyx_v_x0;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_x0);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_x0);
__pyx_cur_scope->__pyx_v_t1 = __pyx_v_t1;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_t1);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_t1);
__pyx_cur_scope->__pyx_v_model = __pyx_v_model;
__Pyx_INCREF(__pyx_cur_scope->__pyx_v_model);
__Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_model);
__Pyx_INCREF(__pyx_v_keys);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__Pyx_XDECREF(__pyx_t_12);
__PYX_XDEC_MEMVIEW(&__pyx_t_16, 1);
__Pyx_AddTraceback("pyross.inference.Spp.FIM_sym", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_dmudp);
__Pyx_XDECREF((PyObject *)__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_xd);
__Pyx_XDECREF(__pyx_v_time_points);
__Pyx_XDECREF(__pyx_v_dt);
__Pyx_XDECREF(__pyx_v_l);
__Pyx_XDECREF(__pyx_v_FIM);
__Pyx_XDECREF(__pyx_v_indices);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XDECREF(__pyx_v_xi);
__Pyx_XDECREF(__pyx_v_xf);
__Pyx_XDECREF(__pyx_v_ti);
__Pyx_XDECREF(__pyx_v_tf);
__Pyx_XDECREF(__pyx_v_Bmat);
__Pyx_XDECREF(__pyx_v_Binv);
__Pyx_XDECREF(__pyx_v_dtan);
__Pyx_XDECREF(__pyx_v_dAdx);
__Pyx_XDECREF(__pyx_v_dcov);
__Pyx_XDECREF(__pyx_v_dBdx);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_dcov_i);
__Pyx_XDECREF(__pyx_v_dBdx_i);
__Pyx_XDECREF(__pyx_v_U);
__Pyx_XDECREF(__pyx_v_dtandx0);
__Pyx_XDECREF(__pyx_v_dcovdx0);
__Pyx_XDECREF(__pyx_v_dmu);
__Pyx_XDECREF(__pyx_v_keys);
__Pyx_DECREF(((PyObject *)__pyx_cur_scope));
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_9_FIM_sym {
PyObject_HEAD
PyObject *__pyx_v_CM_f;
PyArrayObject *__pyx_v_fi;
PyObject *__pyx_v_model;
PyObject *__pyx_v_param_values;
struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self;
PyObject *__pyx_v_t1;
PyObject *__pyx_v_x0;
};
3113: """Does the FIM based off symbolic expressions. In development,"""
3114:
+3115: def dmudp(xi, ti, tf, steps, det_model, C):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_7FIM_sym_1dmudp(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_7FIM_sym_dmudp[] = "\n calculates the derivatives of the mean traj x with respect to epi params and initial conditions.\n Note that although we can calculate the evolution operator T via adjoint gradient ODES it\n is comparable accuracy to finite difference anyway, and far slower.\n ";
static PyMethodDef __pyx_mdef_6pyross_9inference_3Spp_7FIM_sym_1dmudp = {"dmudp", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pyross_9inference_3Spp_7FIM_sym_1dmudp, METH_VARARGS|METH_KEYWORDS, __pyx_doc_6pyross_9inference_3Spp_7FIM_sym_dmudp};
static PyObject *__pyx_pw_6pyross_9inference_3Spp_7FIM_sym_1dmudp(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_xi = 0;
PyObject *__pyx_v_ti = 0;
PyObject *__pyx_v_tf = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_model = 0;
PyObject *__pyx_v_C = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("dmudp (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xi,&__pyx_n_s_ti,&__pyx_n_s_tf,&__pyx_n_s_steps,&__pyx_n_s_det_model,&__pyx_n_s_C,0};
PyObject* values[6] = {0,0,0,0,0,0};
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xi)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_ti)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("dmudp", 1, 6, 6, 1); __PYX_ERR(0, 3115, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tf)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("dmudp", 1, 6, 6, 2); __PYX_ERR(0, 3115, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("dmudp", 1, 6, 6, 3); __PYX_ERR(0, 3115, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_model)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("dmudp", 1, 6, 6, 4); __PYX_ERR(0, 3115, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_C)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("dmudp", 1, 6, 6, 5); __PYX_ERR(0, 3115, __pyx_L3_error)
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dmudp") < 0)) __PYX_ERR(0, 3115, __pyx_L3_error)
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
} else {
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
__pyx_v_xi = values[0];
__pyx_v_ti = values[1];
__pyx_v_tf = values[2];
__pyx_v_steps = values[3];
__pyx_v_det_model = values[4];
__pyx_v_C = values[5];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("dmudp", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3115, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.Spp.FIM_sym.dmudp", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_7FIM_sym_dmudp(__pyx_self, __pyx_v_xi, __pyx_v_ti, __pyx_v_tf, __pyx_v_steps, __pyx_v_det_model, __pyx_v_C);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_7FIM_sym_dmudp(PyObject *__pyx_self, PyObject *__pyx_v_xi, PyObject *__pyx_v_ti, PyObject *__pyx_v_tf, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_model, PyObject *__pyx_v_C) {
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_9_FIM_sym *__pyx_cur_scope;
struct __pyx_obj_6pyross_9inference___pyx_scope_struct_9_FIM_sym *__pyx_outer_scope;
PyObject *__pyx_v_xd = NULL;
PyObject *__pyx_v_tsteps = NULL;
PyObject *__pyx_v_dt = NULL;
PyObject *__pyx_v_dmudp = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_t = NULL;
PyObject *__pyx_v_T = NULL;
PyObject *__pyx_v_Tn = NULL;
CYTHON_UNUSED PyObject *__pyx_v_cm = NULL;
PyObject *__pyx_v_dAdp = NULL;
CYTHON_UNUSED PyObject *__pyx_v__ = NULL;
PyObject *__pyx_v_dmu = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("dmudp", 0);
__pyx_outer_scope = (struct __pyx_obj_6pyross_9inference___pyx_scope_struct_9_FIM_sym *) __Pyx_CyFunction_GetClosure(__pyx_self);
__pyx_cur_scope = __pyx_outer_scope;
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__Pyx_XDECREF(__pyx_t_15);
__Pyx_AddTraceback("pyross.inference.Spp.FIM_sym.dmudp", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_xd);
__Pyx_XDECREF(__pyx_v_tsteps);
__Pyx_XDECREF(__pyx_v_dt);
__Pyx_XDECREF(__pyx_v_dmudp);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_t);
__Pyx_XDECREF(__pyx_v_T);
__Pyx_XDECREF(__pyx_v_Tn);
__Pyx_XDECREF(__pyx_v_cm);
__Pyx_XDECREF(__pyx_v_dAdp);
__Pyx_XDECREF(__pyx_v__);
__Pyx_XDECREF(__pyx_v_dmu);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
__pyx_tuple__42 = PyTuple_Pack(18, __pyx_n_s_xi, __pyx_n_s_ti, __pyx_n_s_tf, __pyx_n_s_steps, __pyx_n_s_det_model, __pyx_n_s_C, __pyx_n_s_xd, __pyx_n_s_tsteps, __pyx_n_s_dt, __pyx_n_s_dmudp, __pyx_n_s_i, __pyx_n_s_t, __pyx_n_s_T, __pyx_n_s_Tn, __pyx_n_s_cm, __pyx_n_s_dAdp, __pyx_n_s__41, __pyx_n_s_dmu); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 3115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple__42);
__Pyx_GIVEREF(__pyx_tuple__42);
/* … */
__pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6pyross_9inference_3Spp_7FIM_sym_1dmudp, 0, __pyx_n_s_FIM_sym_locals_dmudp, ((PyObject*)__pyx_cur_scope), __pyx_n_s_pyross_inference, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3115, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_dmudp = __pyx_t_1;
__pyx_t_1 = 0;
__pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(6, 0, 18, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__42, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pyross_inference_pyx, __pyx_n_s_dmudp, 3115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(0, 3115, __pyx_L1_error)
3116: """
3117: calculates the derivatives of the mean traj x with respect to epi params and initial conditions.
3118: Note that although we can calculate the evolution operator T via adjoint gradient ODES it
3119: is comparable accuracy to finite difference anyway, and far slower.
3120: """
+3121: xd = self.integrate(xi, ti, tf, steps, det_model, C)
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3121, __pyx_L1_error) }
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3121, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_3 = NULL;
__pyx_t_4 = 0;
if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
__pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
if (likely(__pyx_t_3)) {
PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(function);
__Pyx_DECREF_SET(__pyx_t_2, function);
__pyx_t_4 = 1;
}
}
#if CYTHON_FAST_PYCALL
if (PyFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[7] = {__pyx_t_3, __pyx_v_xi, __pyx_v_ti, __pyx_v_tf, __pyx_v_steps, __pyx_v_det_model, __pyx_v_C};
__pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 6+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3121, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
#if CYTHON_FAST_PYCCALL
if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
PyObject *__pyx_temp[7] = {__pyx_t_3, __pyx_v_xi, __pyx_v_ti, __pyx_v_tf, __pyx_v_steps, __pyx_v_det_model, __pyx_v_C};
__pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 6+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3121, __pyx_L1_error)
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_GOTREF(__pyx_t_1);
} else
#endif
{
__pyx_t_5 = PyTuple_New(6+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3121, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_5);
if (__pyx_t_3) {
__Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
}
__Pyx_INCREF(__pyx_v_xi);
__Pyx_GIVEREF(__pyx_v_xi);
PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_xi);
__Pyx_INCREF(__pyx_v_ti);
__Pyx_GIVEREF(__pyx_v_ti);
PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_ti);
__Pyx_INCREF(__pyx_v_tf);
__Pyx_GIVEREF(__pyx_v_tf);
PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, __pyx_v_tf);
__Pyx_INCREF(__pyx_v_steps);
__Pyx_GIVEREF(__pyx_v_steps);
PyTuple_SET_ITEM(__pyx_t_5, 3+__pyx_t_4, __pyx_v_steps);
__Pyx_INCREF(__pyx_v_det_model);
__Pyx_GIVEREF(__pyx_v_det_model);
PyTuple_SET_ITEM(__pyx_t_5, 4+__pyx_t_4, __pyx_v_det_model);
__Pyx_INCREF(__pyx_v_C);
__Pyx_GIVEREF(__pyx_v_C);
PyTuple_SET_ITEM(__pyx_t_5, 5+__pyx_t_4, __pyx_v_C);
__pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3121, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_xd = __pyx_t_1;
__pyx_t_1 = 0;
+3122: tsteps = np.linspace(ti, tf, steps)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_ti, __pyx_v_tf, __pyx_v_steps}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3122, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[4] = {__pyx_t_2, __pyx_v_ti, __pyx_v_tf, __pyx_v_steps}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3122, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_3 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_2) { __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL; } __Pyx_INCREF(__pyx_v_ti); __Pyx_GIVEREF(__pyx_v_ti); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_v_ti); __Pyx_INCREF(__pyx_v_tf); __Pyx_GIVEREF(__pyx_v_tf); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_v_tf); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_4, __pyx_v_steps); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_tsteps = __pyx_t_1; __pyx_t_1 = 0;
+3123: dt=tsteps[1]-tsteps[0]
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_tsteps, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_tsteps, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3123, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_dt = __pyx_t_3; __pyx_t_3 = 0;
+3124: dmudp = 0#np.zeros((3, self.M), dtype='float')
__Pyx_INCREF(__pyx_int_0);
__pyx_v_dmudp = __pyx_int_0;
+3125: for i, t in enumerate(tsteps):
__Pyx_INCREF(__pyx_int_0); __pyx_t_3 = __pyx_int_0; if (likely(PyList_CheckExact(__pyx_v_tsteps)) || PyTuple_CheckExact(__pyx_v_tsteps)) { __pyx_t_5 = __pyx_v_tsteps; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0; __pyx_t_7 = NULL; } else { __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_tsteps); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3125, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_7)) { if (likely(PyList_CheckExact(__pyx_t_5))) { if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 3125, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 3125, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_7(__pyx_t_5); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3125, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_1); __pyx_t_1 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3); __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_1; __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3126: if t1==ti:
if (unlikely(!__pyx_cur_scope->__pyx_v_t1)) { __Pyx_RaiseClosureNameError("t1"); __PYX_ERR(0, 3126, __pyx_L1_error) }
__pyx_t_1 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_t1, __pyx_v_ti, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3126, __pyx_L1_error)
__pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3126, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_8) {
/* … */
goto __pyx_L5;
}
+3127: T = np.eye(self.dim)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_eye); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3127, __pyx_L1_error) } __pyx_t_2 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_1 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_10, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_2); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_T, __pyx_t_1); __pyx_t_1 = 0;
3128: else:
+3129: self.obtain_time_evol_op(x0, xd[i], t1, t, model, C) ## for derivs wrt initial conds
/*else*/ {
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3129, __pyx_L1_error) }
if (unlikely(!__pyx_cur_scope->__pyx_v_x0)) { __Pyx_RaiseClosureNameError("x0"); __PYX_ERR(0, 3129, __pyx_L1_error) }
__pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_cur_scope->__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 3129, __pyx_L1_error)
__pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_xd, __pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3129, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_1, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3129, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (unlikely(!__pyx_cur_scope->__pyx_v_t1)) { __Pyx_RaiseClosureNameError("t1"); __PYX_ERR(0, 3129, __pyx_L1_error) }
__pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_cur_scope->__pyx_v_t1); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3129, __pyx_L1_error)
__pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3129, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_model)) { __Pyx_RaiseClosureNameError("model"); __PYX_ERR(0, 3129, __pyx_L1_error) }
__pyx_t_1 = __pyx_cur_scope->__pyx_v_model;
__Pyx_INCREF(__pyx_t_1);
__pyx_t_9 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.obtain_time_evol_op(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self), __pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14, __pyx_t_1, __pyx_v_C); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3129, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__pyx_t_11.memview = NULL;
__pyx_t_11.data = NULL;
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+3130: T=self.U
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3130, __pyx_L1_error) }
__pyx_t_9 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.U);
__Pyx_INCREF(__pyx_t_9);
__Pyx_XDECREF_SET(__pyx_v_T, __pyx_t_9);
__pyx_t_9 = 0;
}
__pyx_L5:;
+3131: if ti==t:
__pyx_t_9 = PyObject_RichCompare(__pyx_v_ti, __pyx_v_t, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3131, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3131, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (__pyx_t_8) { /* … */ goto __pyx_L6; }
+3132: Tn = np.eye(self.dim)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_eye); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3132, __pyx_L1_error) } __pyx_t_1 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_10, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3132, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_Tn, __pyx_t_9); __pyx_t_9 = 0;
3133: else:
+3134: self.obtain_time_evol_op(xi, xd[i], ti, t, model, C) ## for inner product expression
/*else*/ {
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3134, __pyx_L1_error) }
__pyx_t_12 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_xi, PyBUF_WRITABLE); if (unlikely(!__pyx_t_12.memview)) __PYX_ERR(0, 3134, __pyx_L1_error)
__pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_xd, __pyx_v_i); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_9);
__pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_9, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 3134, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_ti); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3134, __pyx_L1_error)
__pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_t); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3134, __pyx_L1_error)
if (unlikely(!__pyx_cur_scope->__pyx_v_model)) { __Pyx_RaiseClosureNameError("model"); __PYX_ERR(0, 3134, __pyx_L1_error) }
__pyx_t_9 = __pyx_cur_scope->__pyx_v_model;
__Pyx_INCREF(__pyx_t_9);
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.obtain_time_evol_op(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self), __pyx_t_12, __pyx_t_11, __pyx_t_14, __pyx_t_13, __pyx_t_9, __pyx_v_C); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3134, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_12, 1);
__pyx_t_12.memview = NULL;
__pyx_t_12.data = NULL;
__PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
__pyx_t_11.memview = NULL;
__pyx_t_11.data = NULL;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3135: Tn=self.U
if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3135, __pyx_L1_error) }
__pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.U);
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_v_Tn, __pyx_t_2);
__pyx_t_2 = 0;
}
__pyx_L6:;
+3136: self.CM = C(t)
__Pyx_INCREF(__pyx_v_C); __pyx_t_9 = __pyx_v_C; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_1, __pyx_v_t) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_t); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3136, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3136, __pyx_L1_error) if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(0, 3136, __pyx_L1_error) } __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.CM)); __pyx_cur_scope->__pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+3137: cm = C(t).ravel()
__Pyx_INCREF(__pyx_v_C); __pyx_t_1 = __pyx_v_C; __pyx_t_10 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_9 = (__pyx_t_10) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_10, __pyx_v_t) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_t); __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3137, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3137, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9) : __Pyx_PyObject_CallNoArg(__pyx_t_1); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3137, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_cm, __pyx_t_2); __pyx_t_2 = 0;
+3138: dAdp, _ = dA(param_values, CM_f, fi, xi.ravel())
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_dA); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (unlikely(!__pyx_cur_scope->__pyx_v_param_values)) { __Pyx_RaiseClosureNameError("param_values"); __PYX_ERR(0, 3138, __pyx_L1_error) } if (unlikely(!__pyx_cur_scope->__pyx_v_CM_f)) { __Pyx_RaiseClosureNameError("CM_f"); __PYX_ERR(0, 3138, __pyx_L1_error) } if (unlikely(!__pyx_cur_scope->__pyx_v_fi)) { __Pyx_RaiseClosureNameError("fi"); __PYX_ERR(0, 3138, __pyx_L1_error) } __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_xi, __pyx_n_s_ravel); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __pyx_t_15 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_10); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_10, function); } } __pyx_t_9 = (__pyx_t_15) ? __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_t_15) : __Pyx_PyObject_CallNoArg(__pyx_t_10); __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __pyx_t_10 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_cur_scope->__pyx_v_param_values, __pyx_cur_scope->__pyx_v_CM_f, ((PyObject *)__pyx_cur_scope->__pyx_v_fi), __pyx_t_9}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[5] = {__pyx_t_10, __pyx_cur_scope->__pyx_v_param_values, __pyx_cur_scope->__pyx_v_CM_f, ((PyObject *)__pyx_cur_scope->__pyx_v_fi), __pyx_t_9}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 4+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_15 = PyTuple_New(4+__pyx_t_4); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_values); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_values); PyTuple_SET_ITEM(__pyx_t_15, 0+__pyx_t_4, __pyx_cur_scope->__pyx_v_param_values); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_CM_f); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_CM_f); PyTuple_SET_ITEM(__pyx_t_15, 1+__pyx_t_4, __pyx_cur_scope->__pyx_v_CM_f); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_fi)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_fi)); PyTuple_SET_ITEM(__pyx_t_15, 2+__pyx_t_4, ((PyObject *)__pyx_cur_scope->__pyx_v_fi)); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_15, 3+__pyx_t_4, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_15, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3138, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_15 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_15 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_15); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_15 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3138, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_16 = Py_TYPE(__pyx_t_9)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_16(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_15 = __pyx_t_16(__pyx_t_9); if (unlikely(!__pyx_t_15)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_15); if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_9), 2) < 0) __PYX_ERR(0, 3138, __pyx_L1_error) __pyx_t_16 = NULL; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_16 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3138, __pyx_L1_error) __pyx_L8_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_dAdp, __pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v__, __pyx_t_15); __pyx_t_15 = 0;
+3139: dmudp += np.einsum('ij,kj->ki ', Tn, dAdp)*dt ##sum the integral explicitely
__Pyx_GetModuleGlobalName(__pyx_t_15, __pyx_n_s_np); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_15); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_n_s_einsum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0; __pyx_t_15 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_15)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_15); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_15, __pyx_kp_u_ij_kj_ki, __pyx_v_Tn, __pyx_v_dAdp}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3139, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_15, __pyx_kp_u_ij_kj_ki, __pyx_v_Tn, __pyx_v_dAdp}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3139, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_9 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_15) { __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_15); __pyx_t_15 = NULL; } __Pyx_INCREF(__pyx_kp_u_ij_kj_ki); __Pyx_GIVEREF(__pyx_kp_u_ij_kj_ki); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_kp_u_ij_kj_ki); __Pyx_INCREF(__pyx_v_Tn); __Pyx_GIVEREF(__pyx_v_Tn); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_v_Tn); __Pyx_INCREF(__pyx_v_dAdp); __Pyx_GIVEREF(__pyx_v_dAdp); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_4, __pyx_v_dAdp); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_v_dt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_dmudp, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3139, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_dmudp, __pyx_t_2); __pyx_t_2 = 0;
+3140: dmu = np.concatenate((dmudp, np.transpose(T)), axis=0)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_transpose); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_v_T)) { __Pyx_RaiseUnboundLocalError("T"); __PYX_ERR(0, 3140, __pyx_L1_error) } __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, __pyx_v_T) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_T); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_dmudp); __Pyx_GIVEREF(__pyx_v_dmudp); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_dmudp); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 3140, __pyx_L1_error) __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3140, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_dmu = __pyx_t_2; __pyx_t_2 = 0;
+3141: return dmu
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_dmu); __pyx_r = __pyx_v_dmu; goto __pyx_L0;
+3142: M=self.M
__pyx_t_2 = __pyx_cur_scope->__pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_2;
+3143: nClass=self.nClass
__pyx_t_2 = __pyx_cur_scope->__pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_2;
+3144: num_of_infection_terms=self.infection_terms.shape[0]
__pyx_v_num_of_infection_terms = (__pyx_cur_scope->__pyx_v_self->infection_terms->dimensions[0]);
+3145: parameters=self.parameters
__pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->parameters);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_parameters = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+3146: xd = self.integrate(x0, 0, t2-t1, Nf, model, C)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_integrate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyNumber_Subtract(__pyx_v_t2, __pyx_cur_scope->__pyx_v_t1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[7] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_x0, __pyx_int_0, __pyx_t_4, __pyx_v_Nf, __pyx_cur_scope->__pyx_v_model, __pyx_v_C}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 6+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3146, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[7] = {__pyx_t_5, __pyx_cur_scope->__pyx_v_x0, __pyx_int_0, __pyx_t_4, __pyx_v_Nf, __pyx_cur_scope->__pyx_v_model, __pyx_v_C}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 6+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3146, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(6+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_x0); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_x0); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_x0); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_t_4); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_Nf); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_model); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_6, __pyx_cur_scope->__pyx_v_model); __Pyx_INCREF(__pyx_v_C); __Pyx_GIVEREF(__pyx_v_C); PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_6, __pyx_v_C); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3146, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_xd = __pyx_t_1; __pyx_t_1 = 0;
+3147: time_points = np.linspace(0, t2-t1, Nf)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Subtract(__pyx_v_t2, __pyx_cur_scope->__pyx_v_t1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_int_0, __pyx_t_3, __pyx_v_Nf}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3147, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_int_0, __pyx_t_3, __pyx_v_Nf}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3147, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_int_0); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_3); __Pyx_INCREF(__pyx_v_Nf); __Pyx_GIVEREF(__pyx_v_Nf); PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_6, __pyx_v_Nf); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3147, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_time_points = __pyx_t_1; __pyx_t_1 = 0;
+3148: dt = time_points[1] ## given they are linearly spaced
__pyx_t_1 = __Pyx_GetItemInt(__pyx_v_time_points, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3148, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_dt = __pyx_t_1; __pyx_t_1 = 0;
+3149: l = np.zeros((num_of_infection_terms,M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_num_of_infection_terms); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3149, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_l = __pyx_t_1; __pyx_t_1 = 0;
+3150: FIM=0
__Pyx_INCREF(__pyx_int_0);
__pyx_v_FIM = __pyx_int_0;
+3151: if keys == None:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_keys, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3151, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3151, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_8) { /* … */ }
+3152: keys = np.ones((parameters.shape[0], parameters.shape[1]), dtype=int) ## default to all params
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_5); __pyx_t_1 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_dtype, ((PyObject *)(&PyInt_Type))) < 0) __PYX_ERR(0, 3152, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3152, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v_keys, __pyx_t_1); __pyx_t_1 = 0;
+3153: self.lambdify_derivative_functions(keys) ## could probably check for saved functions here
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_lambdify_derivative_functions); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_5, __pyx_v_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_keys); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3153, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3154: ## Ready the inputs for these functions
+3155: param_values = self.parameters.ravel()
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self->parameters), __pyx_n_s_ravel); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_7); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3155, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_param_values = __pyx_t_1; __pyx_t_1 = 0;
+3156: fi = self.fi
__pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.fi); __Pyx_INCREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_1); __pyx_cur_scope->__pyx_v_fi = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3157: indices = np.triu_indices(self.dim, 1)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_triu_indices); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_int_1}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3157, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_t_7, __pyx_int_1}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3157, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_t_7); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_int_1); __pyx_t_7 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3157, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_indices = __pyx_t_1; __pyx_t_1 = 0;
+3158: for k in range(time_points.size-1):
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_time_points, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_2 = 0; __pyx_t_9 = NULL; } else { __pyx_t_2 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3158, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_9)) { if (likely(PyList_CheckExact(__pyx_t_5))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3158, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3158, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3158, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_9(__pyx_t_5); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3158, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3159: print(f"Progress:\t{k/(time_points.size-1)}")
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_time_points, __pyx_n_s_size); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_k, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Progress, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_print, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3159, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3160: xi, xf = xd[k], xd[k+1]
__pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_xd, __pyx_v_k); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3160, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_k, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3160, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_xd, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3160, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_xi, __pyx_t_4); __pyx_t_4 = 0; __Pyx_XDECREF_SET(__pyx_v_xf, __pyx_t_7); __pyx_t_7 = 0;
+3161: ti = time_points[k]
__pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_time_points, __pyx_v_k); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3161, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_XDECREF_SET(__pyx_v_ti, __pyx_t_7); __pyx_t_7 = 0;
+3162: tf = ti+dt
__pyx_t_7 = PyNumber_Add(__pyx_v_ti, __pyx_v_dt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3162, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_XDECREF_SET(__pyx_v_tf, __pyx_t_7); __pyx_t_7 = 0;
+3163: CM_f = C(ti).ravel() ## for generality - redundant for a constant ContactMatrix
__Pyx_INCREF(__pyx_v_C); __pyx_t_1 = __pyx_v_C; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_v_ti) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_ti); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ravel); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3163, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_CM_f); __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_CM_f, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_7); __pyx_t_7 = 0;
+3164: self.CM=C(ti)
__Pyx_INCREF(__pyx_v_C); __pyx_t_1 = __pyx_v_C; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_ti) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_ti); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3164, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3164, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_7); __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.CM)); __pyx_cur_scope->__pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_7); __pyx_t_7 = 0;
3165: ## yield the required arrays
+3166: self.fill_lambdas(xi, l)
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_xi, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 3166, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_v_l, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 3166, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_cur_scope->__pyx_v_self, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3166, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3167: self.noise_correlation(xi, l)
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_xi, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 3167, __pyx_L1_error) __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_v_l, PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(0, 3167, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_cur_scope->__pyx_v_self, __pyx_t_10, __pyx_t_11); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3167, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1); __pyx_t_11.memview = NULL; __pyx_t_11.data = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3168: Bmat = self.convert_vec_to_mat(self.B_vec)
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.B_vec), PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 3168, __pyx_L1_error) __pyx_t_7 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.convert_vec_to_mat(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self), __pyx_t_10, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3168, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __PYX_XDEC_MEMVIEW(&__pyx_t_10, 1); __pyx_t_10.memview = NULL; __pyx_t_10.data = NULL; __Pyx_XDECREF_SET(__pyx_v_Bmat, __pyx_t_7); __pyx_t_7 = 0;
+3169: Binv = np.linalg.inv(Bmat)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_linalg); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_inv); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_4, __pyx_v_Bmat) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_Bmat); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3169, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_Binv, __pyx_t_7); __pyx_t_7 = 0;
3170: ## yield the derivatives by calling saved functions (faster)
+3171: dtan, dAdx = dA(param_values, CM_f, fi, xi.ravel())
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_dA); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_xi, __pyx_n_s_ravel); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_4 = (__pyx_t_12) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_12) : __Pyx_PyObject_CallNoArg(__pyx_t_3); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_values, __pyx_cur_scope->__pyx_v_CM_f, ((PyObject *)__pyx_cur_scope->__pyx_v_fi), __pyx_t_4}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[5] = {__pyx_t_3, __pyx_cur_scope->__pyx_v_param_values, __pyx_cur_scope->__pyx_v_CM_f, ((PyObject *)__pyx_cur_scope->__pyx_v_fi), __pyx_t_4}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_12 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_values); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_values); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_param_values); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_CM_f); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_CM_f); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_CM_f); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_fi)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_fi)); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_fi)); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_6, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_12, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3171, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_12 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_1 = PyList_GET_ITEM(sequence, 0); __pyx_t_12 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(__pyx_t_12); #else __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3171, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; index = 0; __pyx_t_1 = __pyx_t_13(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_12 = __pyx_t_13(__pyx_t_4); if (unlikely(!__pyx_t_12)) goto __pyx_L6_unpacking_failed; __Pyx_GOTREF(__pyx_t_12); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_4), 2) < 0) __PYX_ERR(0, 3171, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; goto __pyx_L7_unpacking_done; __pyx_L6_unpacking_failed:; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3171, __pyx_L1_error) __pyx_L7_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_dtan, __pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_dAdx, __pyx_t_12); __pyx_t_12 = 0;
+3172: dcov, dBdx = dB(param_values, CM_f, fi, xi.ravel())
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_dB); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_xi, __pyx_n_s_ravel); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_param_values, __pyx_cur_scope->__pyx_v_CM_f, ((PyObject *)__pyx_cur_scope->__pyx_v_fi), __pyx_t_1}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_param_values, __pyx_cur_scope->__pyx_v_CM_f, ((PyObject *)__pyx_cur_scope->__pyx_v_fi), __pyx_t_1}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else #endif { __pyx_t_3 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_cur_scope->__pyx_v_param_values); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_param_values); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_cur_scope->__pyx_v_param_values); __Pyx_INCREF(__pyx_cur_scope->__pyx_v_CM_f); __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_CM_f); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_cur_scope->__pyx_v_CM_f); __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_fi)); __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_fi)); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, ((PyObject *)__pyx_cur_scope->__pyx_v_fi)); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 3+__pyx_t_6, __pyx_t_1); __pyx_t_1 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) { PyObject* sequence = __pyx_t_7; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3172, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_12 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_12 = PyList_GET_ITEM(sequence, 0); __pyx_t_3 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(__pyx_t_3); #else __pyx_t_12 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } else { Py_ssize_t index = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3172, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_1)->tp_iternext; index = 0; __pyx_t_12 = __pyx_t_13(__pyx_t_1); if (unlikely(!__pyx_t_12)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_12); index = 1; __pyx_t_3 = __pyx_t_13(__pyx_t_1); if (unlikely(!__pyx_t_3)) goto __pyx_L8_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_1), 2) < 0) __PYX_ERR(0, 3172, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; goto __pyx_L9_unpacking_done; __pyx_L8_unpacking_failed:; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3172, __pyx_L1_error) __pyx_L9_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_dcov, __pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF_SET(__pyx_v_dBdx, __pyx_t_3); __pyx_t_3 = 0;
+3173: dtan = np.array(dtan)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_3, __pyx_v_dtan) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_dtan); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3173, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF_SET(__pyx_v_dtan, __pyx_t_7); __pyx_t_7 = 0;
+3174: dAdx = np.array(dAdx)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_7 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_12, __pyx_v_dAdx) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_dAdx); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3174, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_dAdx, __pyx_t_7); __pyx_t_7 = 0;
+3175: dcov = np.array(dcov)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_3, __pyx_v_dcov) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_dcov); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3175, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF_SET(__pyx_v_dcov, __pyx_t_7); __pyx_t_7 = 0;
+3176: dBdx = np.array(dBdx)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_7 = (__pyx_t_12) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_12, __pyx_v_dBdx) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_dBdx); __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3176, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_dBdx, __pyx_t_7); __pyx_t_7 = 0;
3177: ## Make things true symmetric where necessary
+3178: for i in range(np.sum(keys)): ## len params
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_3, __pyx_v_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_keys); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (likely(PyList_CheckExact(__pyx_t_12)) || PyTuple_CheckExact(__pyx_t_12)) { __pyx_t_7 = __pyx_t_12; __Pyx_INCREF(__pyx_t_7); __pyx_t_14 = 0; __pyx_t_15 = NULL; } else { __pyx_t_14 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3178, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; for (;;) { if (likely(!__pyx_t_15)) { if (likely(PyList_CheckExact(__pyx_t_7))) { if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_14); __Pyx_INCREF(__pyx_t_12); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3178, __pyx_L1_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif } else { if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_14); __Pyx_INCREF(__pyx_t_12); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3178, __pyx_L1_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3178, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif } } else { __pyx_t_12 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_12)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3178, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_12); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_12); __pyx_t_12 = 0; /* … */ } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3179: dcov_i = dcov[i]
__pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_dcov, __pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3179, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_XDECREF_SET(__pyx_v_dcov_i, __pyx_t_12); __pyx_t_12 = 0;
+3180: dcov_i.T[indices] = dcov_i[indices]
__pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_dcov_i, __pyx_v_indices); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dcov_i, __pyx_n_s_T); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3180, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_v_indices, __pyx_t_12) < 0)) __PYX_ERR(0, 3180, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+3181: for i in range(self.dim): ## len params
__pyx_t_7 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (likely(PyList_CheckExact(__pyx_t_12)) || PyTuple_CheckExact(__pyx_t_12)) { __pyx_t_7 = __pyx_t_12; __Pyx_INCREF(__pyx_t_7); __pyx_t_14 = 0; __pyx_t_15 = NULL; } else { __pyx_t_14 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_15 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3181, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; for (;;) { if (likely(!__pyx_t_15)) { if (likely(PyList_CheckExact(__pyx_t_7))) { if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_14); __Pyx_INCREF(__pyx_t_12); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3181, __pyx_L1_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif } else { if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_12 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_14); __Pyx_INCREF(__pyx_t_12); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3181, __pyx_L1_error) #else __pyx_t_12 = PySequence_ITEM(__pyx_t_7, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); #endif } } else { __pyx_t_12 = __pyx_t_15(__pyx_t_7); if (unlikely(!__pyx_t_12)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3181, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_12); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_12); __pyx_t_12 = 0; /* … */ } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3182: dBdx_i = dBdx[i]
__pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_dBdx, __pyx_v_i); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3182, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_XDECREF_SET(__pyx_v_dBdx_i, __pyx_t_12); __pyx_t_12 = 0;
+3183: dBdx_i.T[indices] = dBdx_i[indices]
__pyx_t_12 = __Pyx_PyObject_GetItem(__pyx_v_dBdx_i, __pyx_v_indices); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_dBdx_i, __pyx_n_s_T); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_v_indices, __pyx_t_12) < 0)) __PYX_ERR(0, 3183, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
3184: ## construct d[..]dx0 and stack
+3185: if ti==t1:
__pyx_t_7 = PyObject_RichCompare(__pyx_v_ti, __pyx_cur_scope->__pyx_v_t1, Py_EQ); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3185, __pyx_L1_error) __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3185, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_8) { /* … */ goto __pyx_L14; }
+3186: U=np.eye(self.dim)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_eye); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyInt_FromSsize_t(__pyx_cur_scope->__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_7 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_1, __pyx_t_12) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_12); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_U, __pyx_t_7); __pyx_t_7 = 0;
3187: else:
+3188: self.obtain_time_evol_op(x0, xi, t1, ti, model, C) ## initial to current time
/*else*/ {
__pyx_t_10 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_cur_scope->__pyx_v_x0, PyBUF_WRITABLE); if (unlikely(!__pyx_t_10.memview)) __PYX_ERR(0, 3188, __pyx_L1_error)
__pyx_t_16 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_v_xi, PyBUF_WRITABLE); if (unlikely(!__pyx_t_16.memview)) __PYX_ERR(0, 3188, __pyx_L1_error)
__pyx_t_17 = __pyx_PyFloat_AsDouble(__pyx_cur_scope->__pyx_v_t1); if (unlikely((__pyx_t_17 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3188, __pyx_L1_error)
__pyx_t_18 = __pyx_PyFloat_AsDouble(__pyx_v_ti); if (unlikely((__pyx_t_18 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3188, __pyx_L1_error)
__pyx_t_7 = __pyx_cur_scope->__pyx_v_model;
__Pyx_INCREF(__pyx_t_7);
__pyx_t_3 = ((struct __pyx_vtabstruct_6pyross_9inference_Spp *)__pyx_cur_scope->__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.obtain_time_evol_op(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_cur_scope->__pyx_v_self), __pyx_t_10, __pyx_t_16, __pyx_t_17, __pyx_t_18, __pyx_t_7, __pyx_v_C); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3188, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_3);
__PYX_XDEC_MEMVIEW(&__pyx_t_10, 1);
__pyx_t_10.memview = NULL;
__pyx_t_10.data = NULL;
__PYX_XDEC_MEMVIEW(&__pyx_t_16, 1);
__pyx_t_16.memview = NULL;
__pyx_t_16.data = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3189: U=self.U
__pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.U);
__Pyx_INCREF(__pyx_t_3);
__Pyx_XDECREF_SET(__pyx_v_U, __pyx_t_3);
__pyx_t_3 = 0;
}
__pyx_L14:;
+3190: dtandx0 = np.einsum('ij,ik->ik', U, dAdx)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_einsum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_kp_u_ij_ik_ik, __pyx_v_U, __pyx_v_dAdx}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3190, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_kp_u_ij_ik_ik, __pyx_v_U, __pyx_v_dAdx}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3190, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_1 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_kp_u_ij_ik_ik); __Pyx_GIVEREF(__pyx_kp_u_ij_ik_ik); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_6, __pyx_kp_u_ij_ik_ik); __Pyx_INCREF(__pyx_v_U); __Pyx_GIVEREF(__pyx_v_U); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_v_U); __Pyx_INCREF(__pyx_v_dAdx); __Pyx_GIVEREF(__pyx_v_dAdx); PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_6, __pyx_v_dAdx); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3190, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF_SET(__pyx_v_dtandx0, __pyx_t_3); __pyx_t_3 = 0;
+3191: dcovdx0 = np.einsum('ji, jkl->ikl', U, dBdx)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_einsum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_kp_u_ji_jkl_ikl, __pyx_v_U, __pyx_v_dBdx}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3191, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_kp_u_ji_jkl_ikl, __pyx_v_U, __pyx_v_dBdx}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3191, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); __pyx_t_12 = NULL; } __Pyx_INCREF(__pyx_kp_u_ji_jkl_ikl); __Pyx_GIVEREF(__pyx_kp_u_ji_jkl_ikl); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_u_ji_jkl_ikl); __Pyx_INCREF(__pyx_v_U); __Pyx_GIVEREF(__pyx_v_U); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_U); __Pyx_INCREF(__pyx_v_dBdx); __Pyx_GIVEREF(__pyx_v_dBdx); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_dBdx); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3191, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_dcovdx0, __pyx_t_3); __pyx_t_3 = 0;
+3192: dtan = np.concatenate((dtan, dtandx0), axis=0)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_dtan); __Pyx_GIVEREF(__pyx_v_dtan); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_dtan); __Pyx_INCREF(__pyx_v_dtandx0); __Pyx_GIVEREF(__pyx_v_dtandx0); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_dtandx0); __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 3192, __pyx_L1_error) __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3192, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_dtan, __pyx_t_12); __pyx_t_12 = 0;
+3193: dcov = np.concatenate((dcov, dcovdx0), axis=0)
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_concatenate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_INCREF(__pyx_v_dcov); __Pyx_GIVEREF(__pyx_v_dcov); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_dcov); __Pyx_INCREF(__pyx_v_dcovdx0); __Pyx_GIVEREF(__pyx_v_dcovdx0); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_dcovdx0); __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 3193, __pyx_L1_error) __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, __pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3193, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF_SET(__pyx_v_dcov, __pyx_t_1); __pyx_t_1 = 0;
3194: ## Sum for FIM
+3195: dmu = dmudp(xi.flatten(), ti, tf, Nf, model, C)
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_xi, __pyx_n_s_flatten); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_12); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __pyx_cur_scope->__pyx_v_model; __Pyx_INCREF(__pyx_t_12); __pyx_t_7 = __pyx_pf_6pyross_9inference_3Spp_7FIM_sym_dmudp(__pyx_v_dmudp, __pyx_t_1, __pyx_v_ti, __pyx_v_tf, __pyx_v_Nf, __pyx_t_12, __pyx_v_C); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3195, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_XDECREF_SET(__pyx_v_dmu, __pyx_t_7); __pyx_t_7 = 0;
+3196: dtan += np.einsum('lj,il->ij',dAdx, dmu) ## missing part by product rule
__Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_einsum); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_12)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_12); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_kp_u_lj_il_ij, __pyx_v_dAdx, __pyx_v_dmu}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3196, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[4] = {__pyx_t_12, __pyx_kp_u_lj_il_ij, __pyx_v_dAdx, __pyx_v_dmu}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3196, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_GOTREF(__pyx_t_7); } else #endif { __pyx_t_3 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (__pyx_t_12) { __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_12); __pyx_t_12 = NULL; } __Pyx_INCREF(__pyx_kp_u_lj_il_ij); __Pyx_GIVEREF(__pyx_kp_u_lj_il_ij); PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_6, __pyx_kp_u_lj_il_ij); __Pyx_INCREF(__pyx_v_dAdx); __Pyx_GIVEREF(__pyx_v_dAdx); PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_6, __pyx_v_dAdx); __Pyx_INCREF(__pyx_v_dmu); __Pyx_GIVEREF(__pyx_v_dmu); PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_6, __pyx_v_dmu); __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_dtan, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3196, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v_dtan, __pyx_t_1); __pyx_t_1 = 0;
+3197: dcov += np.einsum('ijk,li->ljk', dBdx, dmu)
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_einsum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_kp_u_ijk_li_ljk, __pyx_v_dBdx, __pyx_v_dmu}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_kp_u_ijk_li_ljk, __pyx_v_dBdx, __pyx_v_dmu}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); } else #endif { __pyx_t_12 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_INCREF(__pyx_kp_u_ijk_li_ljk); __Pyx_GIVEREF(__pyx_kp_u_ijk_li_ljk); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_6, __pyx_kp_u_ijk_li_ljk); __Pyx_INCREF(__pyx_v_dBdx); __Pyx_GIVEREF(__pyx_v_dBdx); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_6, __pyx_v_dBdx); __Pyx_INCREF(__pyx_v_dmu); __Pyx_GIVEREF(__pyx_v_dmu); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_6, __pyx_v_dmu); __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_dcov, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3197, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_dcov, __pyx_t_3); __pyx_t_3 = 0;
+3198: FIM += np.einsum('ia, ak, jk', dtan, Binv, dtan)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_einsum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_12))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_kp_u_ia_ak_jk, __pyx_v_dtan, __pyx_v_Binv, __pyx_v_dtan}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_12)) { PyObject *__pyx_temp[5] = {__pyx_t_1, __pyx_kp_u_ia_ak_jk, __pyx_v_dtan, __pyx_v_Binv, __pyx_v_dtan}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_12, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GOTREF(__pyx_t_3); } else #endif { __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_1) { __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL; } __Pyx_INCREF(__pyx_kp_u_ia_ak_jk); __Pyx_GIVEREF(__pyx_kp_u_ia_ak_jk); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_u_ia_ak_jk); __Pyx_INCREF(__pyx_v_dtan); __Pyx_GIVEREF(__pyx_v_dtan); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_dtan); __Pyx_INCREF(__pyx_v_Binv); __Pyx_GIVEREF(__pyx_v_Binv); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_Binv); __Pyx_INCREF(__pyx_v_dtan); __Pyx_GIVEREF(__pyx_v_dtan); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_dtan); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_v_FIM, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3198, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_FIM, __pyx_t_12); __pyx_t_12 = 0;
+3199: FIM += 0.5*np.einsum('ab,ibc,cd,jda', Binv, dcov, Binv, dcov)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_einsum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_kp_u_ab_ibc_cd_jda, __pyx_v_Binv, __pyx_v_dcov, __pyx_v_Binv, __pyx_v_dcov}; __pyx_t_12 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3199, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_12); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[6] = {__pyx_t_3, __pyx_kp_u_ab_ibc_cd_jda, __pyx_v_Binv, __pyx_v_dcov, __pyx_v_Binv, __pyx_v_dcov}; __pyx_t_12 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 5+__pyx_t_6); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3199, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_12); } else #endif { __pyx_t_1 = PyTuple_New(5+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_kp_u_ab_ibc_cd_jda); __Pyx_GIVEREF(__pyx_kp_u_ab_ibc_cd_jda); PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_6, __pyx_kp_u_ab_ibc_cd_jda); __Pyx_INCREF(__pyx_v_Binv); __Pyx_GIVEREF(__pyx_v_Binv); PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_6, __pyx_v_Binv); __Pyx_INCREF(__pyx_v_dcov); __Pyx_GIVEREF(__pyx_v_dcov); PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_6, __pyx_v_dcov); __Pyx_INCREF(__pyx_v_Binv); __Pyx_GIVEREF(__pyx_v_Binv); PyTuple_SET_ITEM(__pyx_t_1, 3+__pyx_t_6, __pyx_v_Binv); __Pyx_INCREF(__pyx_v_dcov); __Pyx_GIVEREF(__pyx_v_dcov); PyTuple_SET_ITEM(__pyx_t_1, 4+__pyx_t_6, __pyx_v_dcov); __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = PyNumber_InPlaceAdd(__pyx_v_FIM, __pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3199, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v_FIM, __pyx_t_12); __pyx_t_12 = 0;
+3200: return FIM
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_FIM); __pyx_r = __pyx_v_FIM; goto __pyx_L0;
3201:
+3202: def construct_l(self, x):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_17construct_l(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_16construct_l[] = "constructs sympy l. x is a sympy matrix";
static PyObject *__pyx_pw_6pyross_9inference_3Spp_17construct_l(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("construct_l (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_16construct_l(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), ((PyObject *)__pyx_v_x));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_16construct_l(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_x) {
PyObject *__pyx_v_M = NULL;
PyArrayObject *__pyx_v_infection_terms = NULL;
npy_intp __pyx_v_num_of_infection_terms;
PyObject *__pyx_v_CM = NULL;
PyObject *__pyx_v_fi = NULL;
PyObject *__pyx_v_l = NULL;
npy_intp __pyx_v_i;
PyObject *__pyx_v_infective_index = NULL;
PyObject *__pyx_v_m = NULL;
PyObject *__pyx_v_n = NULL;
PyObject *__pyx_v_index = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("construct_l", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_AddTraceback("pyross.inference.Spp.construct_l", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_M);
__Pyx_XDECREF((PyObject *)__pyx_v_infection_terms);
__Pyx_XDECREF(__pyx_v_CM);
__Pyx_XDECREF(__pyx_v_fi);
__Pyx_XDECREF(__pyx_v_l);
__Pyx_XDECREF(__pyx_v_infective_index);
__Pyx_XDECREF(__pyx_v_m);
__Pyx_XDECREF(__pyx_v_n);
__Pyx_XDECREF(__pyx_v_index);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3203: """constructs sympy l. x is a sympy matrix"""
+3204: M=self.M
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_M = __pyx_t_1; __pyx_t_1 = 0;
+3205: infection_terms=self.infection_terms
__pyx_t_1 = ((PyObject *)__pyx_v_self->infection_terms);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_infection_terms = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+3206: num_of_infection_terms=infection_terms.shape[0]
__pyx_v_num_of_infection_terms = (__pyx_v_infection_terms->dimensions[0]);
+3207: CM = sympy.Matrix( sympy.symarray('CM', (M, M)))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sympy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sympy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_symarray); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_M); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_M); __pyx_t_6 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_n_u_CM, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) { PyObject *__pyx_temp[3] = {__pyx_t_6, __pyx_n_u_CM, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_6) { __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL; } __Pyx_INCREF(__pyx_n_u_CM); __Pyx_GIVEREF(__pyx_n_u_CM); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_n_u_CM); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3207, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_CM = __pyx_t_1; __pyx_t_1 = 0;
+3208: fi = sympy.Matrix( sympy.symarray('fi', (1, M)))
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sympy); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sympy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_symarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_1); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_M); __pyx_t_4 = NULL; __pyx_t_7 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_7 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_n_u_fi, __pyx_t_5}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_n_u_fi, __pyx_t_5}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_n_u_fi); __Pyx_GIVEREF(__pyx_n_u_fi); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_7, __pyx_n_u_fi); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_7, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_8, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_fi = __pyx_t_1; __pyx_t_1 = 0;
+3209: l = sympy.Matrix(np.zeros((num_of_infection_terms,M)))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sympy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_num_of_infection_terms); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_M); __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_8, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_l = __pyx_t_1; __pyx_t_1 = 0;
+3210: for i in range(num_of_infection_terms):
__pyx_t_9 = __pyx_v_num_of_infection_terms;
__pyx_t_10 = __pyx_t_9;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_i = __pyx_t_11;
+3211: infective_index = infection_terms[i, 1]
__pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_infective_index, __pyx_t_1); __pyx_t_1 = 0;
+3212: for m in range(M):
__pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_12 = 0; __pyx_t_13 = NULL; } else { __pyx_t_12 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3212, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_13)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_12); __Pyx_INCREF(__pyx_t_1); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 3212, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_12); __Pyx_INCREF(__pyx_t_1); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(0, 3212, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3212, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_13(__pyx_t_3); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3212, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; }
+3213: for n in range(M):
__pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_14 = 0; __pyx_t_15 = NULL; } else { __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_15 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3213, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_15)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3213, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_1); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3213, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_15(__pyx_t_2); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3213, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3214: index = n + M*infective_index
__pyx_t_1 = PyNumber_Multiply(__pyx_v_M, __pyx_v_infective_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_6 = PyNumber_Add(__pyx_v_n, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_index, __pyx_t_6); __pyx_t_6 = 0;
+3215: l[i, m] += CM[m,n]*x[index]/fi[n]
__pyx_t_6 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_m); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_l, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_m); __Pyx_INCREF(__pyx_v_n); __Pyx_GIVEREF(__pyx_v_n); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_n); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_CM, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_v_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_fi, __pyx_v_n); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(PyObject_SetItem(__pyx_v_l, __pyx_t_1, __pyx_t_5) < 0)) __PYX_ERR(0, 3215, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3216: return l
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_l); __pyx_r = __pyx_v_l; goto __pyx_L0;
3217:
+3218: def construct_A_spp(self, x):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_19construct_A_spp(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_18construct_A_spp[] = "construct Spp A. x is a sympy matrix";
static PyObject *__pyx_pw_6pyross_9inference_3Spp_19construct_A_spp(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("construct_A_spp (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_18construct_A_spp(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), ((PyObject *)__pyx_v_x));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_18construct_A_spp(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_x) {
PyObject *__pyx_v_M = NULL;
Py_ssize_t __pyx_v_nClass;
CYTHON_UNUSED PyArrayObject *__pyx_v_constant_terms = NULL;
PyArrayObject *__pyx_v_linear_terms = NULL;
PyArrayObject *__pyx_v_infection_terms = NULL;
PyObject *__pyx_v_S_index = NULL;
PyObject *__pyx_v_s = NULL;
PyArrayObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_A = NULL;
PyObject *__pyx_v_l = NULL;
PyObject *__pyx_v_p = NULL;
npy_intp __pyx_v_i;
PyObject *__pyx_v_product_index = NULL;
CYTHON_UNUSED PyObject *__pyx_v_infective_index = NULL;
PyObject *__pyx_v_rate_index = NULL;
PyObject *__pyx_v_rate = NULL;
PyObject *__pyx_v_m = NULL;
PyObject *__pyx_v_reagent_index = NULL;
PyObject *__pyx_v_reagent = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("construct_A_spp", 0);
__Pyx_INCREF(__pyx_v_x);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.Spp.construct_A_spp", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_M);
__Pyx_XDECREF((PyObject *)__pyx_v_constant_terms);
__Pyx_XDECREF((PyObject *)__pyx_v_linear_terms);
__Pyx_XDECREF((PyObject *)__pyx_v_infection_terms);
__Pyx_XDECREF(__pyx_v_S_index);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF((PyObject *)__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_A);
__Pyx_XDECREF(__pyx_v_l);
__Pyx_XDECREF(__pyx_v_p);
__Pyx_XDECREF(__pyx_v_product_index);
__Pyx_XDECREF(__pyx_v_infective_index);
__Pyx_XDECREF(__pyx_v_rate_index);
__Pyx_XDECREF(__pyx_v_rate);
__Pyx_XDECREF(__pyx_v_m);
__Pyx_XDECREF(__pyx_v_reagent_index);
__Pyx_XDECREF(__pyx_v_reagent);
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3219: """construct Spp A. x is a sympy matrix"""
+3220: M=self.M
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3220, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_M = __pyx_t_1; __pyx_t_1 = 0;
+3221: nClass=self.nClass
__pyx_t_2 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_2;
+3222: constant_terms=self.constant_terms
__pyx_t_1 = ((PyObject *)__pyx_v_self->constant_terms);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_constant_terms = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+3223: linear_terms=self.linear_terms
__pyx_t_1 = ((PyObject *)__pyx_v_self->linear_terms);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_linear_terms = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+3224: infection_terms=self.infection_terms
__pyx_t_1 = ((PyObject *)__pyx_v_self->infection_terms);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_infection_terms = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+3225: x=x.reshape(1,self.dim)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_int_1, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3225, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_int_1, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3225, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_int_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3225, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_1); __pyx_t_1 = 0;
+3226: S_index=self.class_index_dict['S']
if (unlikely(__pyx_v_self->__pyx_base.class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 3226, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_self->__pyx_base.class_index_dict, __pyx_n_u_S); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3226, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_S_index = __pyx_t_1;
__pyx_t_1 = 0;
+3227: s = x[:,S_index*M:(S_index+1)*M]
__pyx_t_1 = PyNumber_Multiply(__pyx_v_S_index, __pyx_v_M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_S_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyNumber_Multiply(__pyx_t_3, __pyx_v_M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PySlice_New(__pyx_t_1, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_s = __pyx_t_3; __pyx_t_3 = 0;
+3228: parameters=self.parameters
__pyx_t_3 = ((PyObject *)__pyx_v_self->parameters);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_parameters = ((PyArrayObject *)__pyx_t_3);
__pyx_t_3 = 0;
3229:
+3230: A=sympy.Matrix(np.zeros((nClass,M) ))
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sympy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_M); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_7 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_4, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_5, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_A = __pyx_t_3; __pyx_t_3 = 0;
+3231: l=self.construct_l(x)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_l); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_7, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_x); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_l = __pyx_t_3; __pyx_t_3 = 0;
+3232: p = sympy.Matrix( sympy.symarray('p', (parameters.shape[0], parameters.shape[1]) )) ## epi-p
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sympy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sympy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_symarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_4); __pyx_t_5 = 0; __pyx_t_4 = 0; __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_n_u_p, __pyx_t_9}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_n_u_p, __pyx_t_9}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_INCREF(__pyx_n_u_p); __Pyx_GIVEREF(__pyx_n_u_p); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_n_u_p); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3232, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_p = __pyx_t_3; __pyx_t_3 = 0;
+3233: for i in range(infection_terms.shape[0]):
__pyx_t_10 = (__pyx_v_infection_terms->dimensions[0]);
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+3234: product_index = infection_terms[i, 2]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_2); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3234, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_product_index, __pyx_t_3); __pyx_t_3 = 0;
+3235: infective_index = infection_terms[i, 1]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_1); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_infective_index, __pyx_t_3); __pyx_t_3 = 0;
+3236: rate_index = infection_terms[i, 0]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_0); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3236, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_rate_index, __pyx_t_3); __pyx_t_3 = 0;
+3237: rate = p[rate_index,:]
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_rate_index); __Pyx_GIVEREF(__pyx_v_rate_index); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rate_index); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_p, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3237, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_rate, __pyx_t_7); __pyx_t_7 = 0;
+3238: for m in range(M):
__pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) { __pyx_t_3 = __pyx_t_7; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0; __pyx_t_13 = NULL; } else { __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3238, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; for (;;) { if (likely(!__pyx_t_13)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3238, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3238, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3238, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } } else { __pyx_t_7 = __pyx_t_13(__pyx_t_3); if (unlikely(!__pyx_t_7)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3238, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_7); } __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_7); __pyx_t_7 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; }
+3239: A[S_index, m] -= rate[m]*l[i, m]*s[m]
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_S_index); __Pyx_GIVEREF(__pyx_v_S_index); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_S_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_m); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_A, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_m); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_l, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_s, __pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PyNumber_Multiply(__pyx_t_9, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceSubtract(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(PyObject_SetItem(__pyx_v_A, __pyx_t_7, __pyx_t_5) < 0)) __PYX_ERR(0, 3239, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3240: if product_index>-1:
__pyx_t_7 = PyObject_RichCompare(__pyx_v_product_index, __pyx_int_neg_1, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3240, __pyx_L1_error) __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 3240, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_14) { /* … */ }
+3241: A[product_index, m] += rate[m]*l[i, m]*s[m]
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_m); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_A, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_1); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_m); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_l, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyNumber_Multiply(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_s, __pyx_v_m); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = PyNumber_Multiply(__pyx_t_9, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(PyObject_SetItem(__pyx_v_A, __pyx_t_7, __pyx_t_1) < 0)) __PYX_ERR(0, 3241, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3242: for i in range(linear_terms.shape[0]):
__pyx_t_10 = (__pyx_v_linear_terms->dimensions[0]);
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+3243: product_index = linear_terms[i, 2]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_2); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_terms), __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3243, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_product_index, __pyx_t_3); __pyx_t_3 = 0;
+3244: reagent_index = linear_terms[i, 1]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_1); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_terms), __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3244, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_reagent_index, __pyx_t_3); __pyx_t_3 = 0;
+3245: reagent = x[:,reagent_index*M:(reagent_index+1)*M]
__pyx_t_3 = PyNumber_Multiply(__pyx_v_reagent_index, __pyx_v_M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_v_reagent_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = PyNumber_Multiply(__pyx_t_7, __pyx_v_M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PySlice_New(__pyx_t_3, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_slice__2); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3245, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_reagent, __pyx_t_7); __pyx_t_7 = 0;
+3246: rate_index = linear_terms[i, 0]
__pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_0); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_terms), __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_rate_index, __pyx_t_7); __pyx_t_7 = 0;
+3247: rate = p[rate_index,:]
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_rate_index); __Pyx_GIVEREF(__pyx_v_rate_index); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_rate_index); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_slice__2); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_p, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_rate, __pyx_t_1); __pyx_t_1 = 0;
+3248: for m in range(M):
__pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_7 = __pyx_t_1; __Pyx_INCREF(__pyx_t_7); __pyx_t_2 = 0; __pyx_t_13 = NULL; } else { __pyx_t_2 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_13 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3248, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_13)) { if (likely(PyList_CheckExact(__pyx_t_7))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3248, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3248, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_13(__pyx_t_7); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3248, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; }
+3249: A[reagent_index, m] -= rate[m]*reagent[m]
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_reagent_index); __Pyx_GIVEREF(__pyx_v_reagent_index); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_reagent_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_m); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_A, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_reagent, __pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceSubtract(__pyx_t_3, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3249, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(PyObject_SetItem(__pyx_v_A, __pyx_t_1, __pyx_t_5) < 0)) __PYX_ERR(0, 3249, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3250: if product_index >-1:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_product_index, __pyx_int_neg_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3250, __pyx_L1_error) __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 3250, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_14) { /* … */ }
+3251: A[product_index, m] += rate[m]*reagent[m]
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_m); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_A, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_reagent, __pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = PyNumber_Multiply(__pyx_t_9, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3251, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(PyObject_SetItem(__pyx_v_A, __pyx_t_1, __pyx_t_3) < 0)) __PYX_ERR(0, 3251, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3252: A=A.reshape(1, self.dim)
__pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_A, __pyx_n_s_reshape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_8 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_int_1, __pyx_t_3}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3252, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_int_1, __pyx_t_3}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3252, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_int_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF_SET(__pyx_v_A, __pyx_t_7); __pyx_t_7 = 0;
+3253: return A
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_A); __pyx_r = __pyx_v_A; goto __pyx_L0;
3254:
+3255: def construct_J_spp(self, x):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_21construct_J_spp(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_20construct_J_spp[] = "constructs Spp J. x is a sympy matrix";
static PyObject *__pyx_pw_6pyross_9inference_3Spp_21construct_J_spp(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("construct_J_spp (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_20construct_J_spp(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), ((PyObject *)__pyx_v_x));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_20construct_J_spp(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_x) {
PyObject *__pyx_v_M = NULL;
Py_ssize_t __pyx_v_nClass;
CYTHON_UNUSED PyArrayObject *__pyx_v_constant_terms = NULL;
PyArrayObject *__pyx_v_linear_terms = NULL;
PyArrayObject *__pyx_v_infection_terms = NULL;
PyObject *__pyx_v_S_index = NULL;
PyObject *__pyx_v_s = NULL;
PyArrayObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_J = NULL;
PyObject *__pyx_v_CM = NULL;
PyObject *__pyx_v_fi = NULL;
PyObject *__pyx_v_l = NULL;
PyObject *__pyx_v_p = NULL;
npy_intp __pyx_v_i;
PyObject *__pyx_v_product_index = NULL;
PyObject *__pyx_v_infective_index = NULL;
PyObject *__pyx_v_rate_index = NULL;
PyObject *__pyx_v_rate = NULL;
PyObject *__pyx_v_m = NULL;
PyObject *__pyx_v_n = NULL;
PyObject *__pyx_v_reagent_index = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("construct_J_spp", 0);
__Pyx_INCREF(__pyx_v_x);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.Spp.construct_J_spp", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_M);
__Pyx_XDECREF((PyObject *)__pyx_v_constant_terms);
__Pyx_XDECREF((PyObject *)__pyx_v_linear_terms);
__Pyx_XDECREF((PyObject *)__pyx_v_infection_terms);
__Pyx_XDECREF(__pyx_v_S_index);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF((PyObject *)__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_J);
__Pyx_XDECREF(__pyx_v_CM);
__Pyx_XDECREF(__pyx_v_fi);
__Pyx_XDECREF(__pyx_v_l);
__Pyx_XDECREF(__pyx_v_p);
__Pyx_XDECREF(__pyx_v_product_index);
__Pyx_XDECREF(__pyx_v_infective_index);
__Pyx_XDECREF(__pyx_v_rate_index);
__Pyx_XDECREF(__pyx_v_rate);
__Pyx_XDECREF(__pyx_v_m);
__Pyx_XDECREF(__pyx_v_n);
__Pyx_XDECREF(__pyx_v_reagent_index);
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3256: """constructs Spp J. x is a sympy matrix"""
+3257: M=self.M
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3257, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_M = __pyx_t_1; __pyx_t_1 = 0;
+3258: nClass=self.nClass
__pyx_t_2 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_2;
+3259: constant_terms=self.constant_terms
__pyx_t_1 = ((PyObject *)__pyx_v_self->constant_terms);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_constant_terms = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+3260: linear_terms=self.linear_terms
__pyx_t_1 = ((PyObject *)__pyx_v_self->linear_terms);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_linear_terms = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+3261: infection_terms=self.infection_terms
__pyx_t_1 = ((PyObject *)__pyx_v_self->infection_terms);
__Pyx_INCREF(__pyx_t_1);
__pyx_v_infection_terms = ((PyArrayObject *)__pyx_t_1);
__pyx_t_1 = 0;
+3262: x=x.reshape(1,self.dim)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_int_1, __pyx_t_4}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3262, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_int_1, __pyx_t_4}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3262, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_int_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3262, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_1); __pyx_t_1 = 0;
+3263: S_index=self.class_index_dict['S']
if (unlikely(__pyx_v_self->__pyx_base.class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 3263, __pyx_L1_error)
}
__pyx_t_1 = __Pyx_PyDict_GetItem(__pyx_v_self->__pyx_base.class_index_dict, __pyx_n_u_S); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3263, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_S_index = __pyx_t_1;
__pyx_t_1 = 0;
+3264: s = x[:,S_index*M:(S_index+1)*M]
__pyx_t_1 = PyNumber_Multiply(__pyx_v_S_index, __pyx_v_M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_S_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyNumber_Multiply(__pyx_t_3, __pyx_v_M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PySlice_New(__pyx_t_1, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3264, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_s = __pyx_t_3; __pyx_t_3 = 0;
+3265: parameters=self.parameters
__pyx_t_3 = ((PyObject *)__pyx_v_self->parameters);
__Pyx_INCREF(__pyx_t_3);
__pyx_v_parameters = ((PyArrayObject *)__pyx_t_3);
__pyx_t_3 = 0;
+3266: J = Array(np.zeros((nClass, M, nClass, M)))
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_M); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_8); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_v_M); __pyx_t_4 = 0; __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_1 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_9); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3266, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_J = __pyx_t_3; __pyx_t_3 = 0;
+3267: CM = sympy.Matrix( sympy.symarray('CM', (M, M)))
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sympy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sympy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_symarray); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_M); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_M); __pyx_t_8 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_CM, __pyx_t_5}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_CM, __pyx_t_5}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_n_u_CM); __Pyx_GIVEREF(__pyx_n_u_CM); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_n_u_CM); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3267, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_CM = __pyx_t_3; __pyx_t_3 = 0;
+3268: fi = sympy.Matrix( sympy.symarray('fi', (1, M)))
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sympy); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sympy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_symarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_int_1); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_M); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_n_u_fi, __pyx_t_9}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_n_u_fi, __pyx_t_9}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_n_u_fi); __Pyx_GIVEREF(__pyx_n_u_fi); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_6, __pyx_n_u_fi); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_6, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_4, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_1); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3268, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_fi = __pyx_t_3; __pyx_t_3 = 0;
+3269: l = self.construct_l(x)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_1, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_x); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3269, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_3; __pyx_t_3 = 0;
+3270: p = sympy.Matrix( sympy.symarray('p', (parameters.shape[0], parameters.shape[1]) )) ## epi-p
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sympy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sympy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_symarray); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[1])); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_9); __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_9 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_n_u_p, __pyx_t_5}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_8)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_n_u_p, __pyx_t_5}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_8, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_INCREF(__pyx_n_u_p); __Pyx_GIVEREF(__pyx_n_u_p); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_n_u_p); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_1))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); } } __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_8, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_7); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3270, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_p = __pyx_t_3; __pyx_t_3 = 0;
+3271: for i in range(infection_terms.shape[0]):
__pyx_t_10 = (__pyx_v_infection_terms->dimensions[0]);
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+3272: product_index = infection_terms[i, 2]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_2); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3272, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_product_index, __pyx_t_3); __pyx_t_3 = 0;
+3273: infective_index = infection_terms[i, 1]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_1); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3273, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_infective_index, __pyx_t_3); __pyx_t_3 = 0;
+3274: rate_index = infection_terms[i, 0]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_int_0); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3274, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF_SET(__pyx_v_rate_index, __pyx_t_3); __pyx_t_3 = 0;
+3275: rate = p[rate_index,:]
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_rate_index); __Pyx_GIVEREF(__pyx_v_rate_index); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rate_index); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__2); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_p, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3275, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_rate, __pyx_t_1); __pyx_t_1 = 0;
+3276: for m in range(M):
__pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0; __pyx_t_13 = NULL; } else { __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3276, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_13)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3276, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3276, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3276, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_13(__pyx_t_3); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3276, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; }
+3277: J[S_index, m, S_index, m] -= rate[m]*l[i, m]
__pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_S_index); __Pyx_GIVEREF(__pyx_v_S_index); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_S_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_S_index); __Pyx_GIVEREF(__pyx_v_S_index); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_S_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_m); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_J, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_m); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_l, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Multiply(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3277, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_J, __pyx_t_1, __pyx_t_4) < 0)) __PYX_ERR(0, 3277, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3278: if product_index>-1:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_product_index, __pyx_int_neg_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3278, __pyx_L1_error) __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 3278, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_14) { /* … */ }
+3279: J[product_index, m, S_index, m] += rate[m]*l[i, m]
__pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_S_index); __Pyx_GIVEREF(__pyx_v_S_index); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_S_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_m); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_J, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_m); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_l, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_Multiply(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3279, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(PyObject_SetItem(__pyx_v_J, __pyx_t_1, __pyx_t_7) < 0)) __PYX_ERR(0, 3279, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3280: for n in range(M):
__pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) { __pyx_t_7 = __pyx_t_1; __Pyx_INCREF(__pyx_t_7); __pyx_t_15 = 0; __pyx_t_16 = NULL; } else { __pyx_t_15 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_16 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_16)) __PYX_ERR(0, 3280, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; for (;;) { if (likely(!__pyx_t_16)) { if (likely(PyList_CheckExact(__pyx_t_7))) { if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 3280, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } else { if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_7)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; if (unlikely(0 < 0)) __PYX_ERR(0, 3280, __pyx_L1_error) #else __pyx_t_1 = PySequence_ITEM(__pyx_t_7, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3280, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); #endif } } else { __pyx_t_1 = __pyx_t_16(__pyx_t_7); if (unlikely(!__pyx_t_1)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3280, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_1); } __Pyx_XDECREF_SET(__pyx_v_n, __pyx_t_1); __pyx_t_1 = 0; /* … */ } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3281: J[S_index, m, infective_index, n] -= s[m]*rate[m]*CM[m, n]/fi[n]
__pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_S_index); __Pyx_GIVEREF(__pyx_v_S_index); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_S_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_infective_index); __Pyx_GIVEREF(__pyx_v_infective_index); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_infective_index); __Pyx_INCREF(__pyx_v_n); __Pyx_GIVEREF(__pyx_v_n); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_n); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_J, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_s, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = PyNumber_Multiply(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_m); __Pyx_INCREF(__pyx_v_n); __Pyx_GIVEREF(__pyx_v_n); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_n); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_CM, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Multiply(__pyx_t_9, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_fi, __pyx_v_n); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = __Pyx_PyNumber_Divide(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_InPlaceSubtract(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(PyObject_SetItem(__pyx_v_J, __pyx_t_1, __pyx_t_4) < 0)) __PYX_ERR(0, 3281, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3282: if product_index>-1:
__pyx_t_1 = PyObject_RichCompare(__pyx_v_product_index, __pyx_int_neg_1, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3282, __pyx_L1_error) __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 3282, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_14) { /* … */ }
+3283: J[product_index, m, infective_index, n] += s[m]*rate[m]*CM[m, n]/fi[n]
__pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_infective_index); __Pyx_GIVEREF(__pyx_v_infective_index); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_infective_index); __Pyx_INCREF(__pyx_v_n); __Pyx_GIVEREF(__pyx_v_n); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_v_n); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_J, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_s, __pyx_v_m); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = PyNumber_Multiply(__pyx_t_9, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_m); __Pyx_INCREF(__pyx_v_n); __Pyx_GIVEREF(__pyx_v_n); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_n); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_CM, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = PyNumber_Multiply(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_fi, __pyx_v_n); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_J, __pyx_t_1, __pyx_t_9) < 0)) __PYX_ERR(0, 3283, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3284: for i in range(linear_terms.shape[0]):
__pyx_t_10 = (__pyx_v_linear_terms->dimensions[0]);
__pyx_t_11 = __pyx_t_10;
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_11; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
+3285: product_index = linear_terms[i, 2]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_2); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_terms), __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3285, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_product_index, __pyx_t_3); __pyx_t_3 = 0;
+3286: reagent_index = linear_terms[i, 1]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_1); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_terms), __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3286, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_reagent_index, __pyx_t_3); __pyx_t_3 = 0;
+3287: rate_index = linear_terms[i, 0]
__pyx_t_3 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_0); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_terms), __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3287, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_rate_index, __pyx_t_3); __pyx_t_3 = 0;
+3288: rate = p[rate_index,:]
__pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_rate_index); __Pyx_GIVEREF(__pyx_v_rate_index); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rate_index); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_p, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3288, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_rate, __pyx_t_7); __pyx_t_7 = 0;
+3289: for m in range(M):
__pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) { __pyx_t_3 = __pyx_t_7; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0; __pyx_t_13 = NULL; } else { __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_13 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3289, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; for (;;) { if (likely(!__pyx_t_13)) { if (likely(PyList_CheckExact(__pyx_t_3))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3289, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_7); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3289, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3289, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } } else { __pyx_t_7 = __pyx_t_13(__pyx_t_3); if (unlikely(!__pyx_t_7)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3289, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_7); } __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_7); __pyx_t_7 = 0; /* … */ } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; }
+3290: J[reagent_index, m, reagent_index, m] -= rate[m]
__pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_reagent_index); __Pyx_GIVEREF(__pyx_v_reagent_index); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_reagent_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_reagent_index); __Pyx_GIVEREF(__pyx_v_reagent_index); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_reagent_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_v_m); __pyx_t_1 = __Pyx_PyObject_GetItem(__pyx_v_J, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = PyNumber_InPlaceSubtract(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3290, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(PyObject_SetItem(__pyx_v_J, __pyx_t_7, __pyx_t_5) < 0)) __PYX_ERR(0, 3290, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3291: if product_index>-1:
__pyx_t_7 = PyObject_RichCompare(__pyx_v_product_index, __pyx_int_neg_1, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3291, __pyx_L1_error) __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_14 < 0)) __PYX_ERR(0, 3291, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_14) { /* … */ }
+3292: J[product_index, m, reagent_index, m] += rate[m]
__pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_reagent_index); __Pyx_GIVEREF(__pyx_v_reagent_index); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_reagent_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_v_m); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_J, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3292, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(PyObject_SetItem(__pyx_v_J, __pyx_t_7, __pyx_t_1) < 0)) __PYX_ERR(0, 3292, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3293: J=J.reshape(self.dim, self.dim)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_J, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_t_9}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3293, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_1, __pyx_t_9}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3293, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_t_9); __pyx_t_1 = 0; __pyx_t_9 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3293, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v_J, __pyx_t_3); __pyx_t_3 = 0;
+3294: return J
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_J); __pyx_r = __pyx_v_J; goto __pyx_L0;
3295:
3296:
+3297: def construct_B_spp(self, x):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_23construct_B_spp(PyObject *__pyx_v_self, PyObject *__pyx_v_x); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_22construct_B_spp[] = "constructs Spp B. x is a sympy array";
static PyObject *__pyx_pw_6pyross_9inference_3Spp_23construct_B_spp(PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("construct_B_spp (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_22construct_B_spp(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), ((PyObject *)__pyx_v_x));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_22construct_B_spp(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_x) {
double __pyx_v_N;
PyObject *__pyx_v_M = NULL;
PyObject *__pyx_v_nClass = NULL;
PyArrayObject *__pyx_v_constant_terms = NULL;
PyArrayObject *__pyx_v_linear_terms = NULL;
PyArrayObject *__pyx_v_infection_terms = NULL;
PyArrayObject *__pyx_v_parameters = NULL;
PyObject *__pyx_v_S_index = NULL;
PyObject *__pyx_v_s = NULL;
PyObject *__pyx_v_B = NULL;
PyObject *__pyx_v_l = NULL;
PyObject *__pyx_v_p = NULL;
npy_intp __pyx_v_i;
PyObject *__pyx_v_rate_index = NULL;
PyObject *__pyx_v_class_index = NULL;
PyObject *__pyx_v_rate = NULL;
PyObject *__pyx_v_m = NULL;
PyObject *__pyx_v_product_index = NULL;
CYTHON_UNUSED PyObject *__pyx_v_infective_index = NULL;
PyObject *__pyx_v_reagent_index = NULL;
PyObject *__pyx_v_reagent = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("construct_B_spp", 0);
__Pyx_INCREF(__pyx_v_x);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.Spp.construct_B_spp", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_M);
__Pyx_XDECREF(__pyx_v_nClass);
__Pyx_XDECREF((PyObject *)__pyx_v_constant_terms);
__Pyx_XDECREF((PyObject *)__pyx_v_linear_terms);
__Pyx_XDECREF((PyObject *)__pyx_v_infection_terms);
__Pyx_XDECREF((PyObject *)__pyx_v_parameters);
__Pyx_XDECREF(__pyx_v_S_index);
__Pyx_XDECREF(__pyx_v_s);
__Pyx_XDECREF(__pyx_v_B);
__Pyx_XDECREF(__pyx_v_l);
__Pyx_XDECREF(__pyx_v_p);
__Pyx_XDECREF(__pyx_v_rate_index);
__Pyx_XDECREF(__pyx_v_class_index);
__Pyx_XDECREF(__pyx_v_rate);
__Pyx_XDECREF(__pyx_v_m);
__Pyx_XDECREF(__pyx_v_product_index);
__Pyx_XDECREF(__pyx_v_infective_index);
__Pyx_XDECREF(__pyx_v_reagent_index);
__Pyx_XDECREF(__pyx_v_reagent);
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3298: """constructs Spp B. x is a sympy array"""
+3299: N=self.N
__pyx_t_1 = __pyx_v_self->__pyx_base.N; __pyx_v_N = __pyx_t_1;
+3300: M=self.M
__pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3300, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_M = __pyx_t_2; __pyx_t_2 = 0;
+3301: nClass=self.nClass
__pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.nClass); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3301, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_v_nClass = __pyx_t_2; __pyx_t_2 = 0;
+3302: constant_terms=self.constant_terms
__pyx_t_2 = ((PyObject *)__pyx_v_self->constant_terms);
__Pyx_INCREF(__pyx_t_2);
__pyx_v_constant_terms = ((PyArrayObject *)__pyx_t_2);
__pyx_t_2 = 0;
+3303: linear_terms=self.linear_terms
__pyx_t_2 = ((PyObject *)__pyx_v_self->linear_terms);
__Pyx_INCREF(__pyx_t_2);
__pyx_v_linear_terms = ((PyArrayObject *)__pyx_t_2);
__pyx_t_2 = 0;
+3304: infection_terms=self.infection_terms
__pyx_t_2 = ((PyObject *)__pyx_v_self->infection_terms);
__Pyx_INCREF(__pyx_t_2);
__pyx_v_infection_terms = ((PyArrayObject *)__pyx_t_2);
__pyx_t_2 = 0;
+3305: parameters=self.parameters
__pyx_t_2 = ((PyObject *)__pyx_v_self->parameters);
__Pyx_INCREF(__pyx_t_2);
__pyx_v_parameters = ((PyArrayObject *)__pyx_t_2);
__pyx_t_2 = 0;
+3306: x = x.reshape(1, self.dim)
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_n_s_reshape); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_int_1, __pyx_t_4}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3306, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_int_1, __pyx_t_4}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3306, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_int_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4); __pyx_t_4 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3306, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_2); __pyx_t_2 = 0;
+3307: S_index=self.class_index_dict['S']
if (unlikely(__pyx_v_self->__pyx_base.class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 3307, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_self->__pyx_base.class_index_dict, __pyx_n_u_S); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3307, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_S_index = __pyx_t_2;
__pyx_t_2 = 0;
+3308: s = x[:,S_index*M:(S_index+1)*M]
__pyx_t_2 = PyNumber_Multiply(__pyx_v_S_index, __pyx_v_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_S_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyNumber_Multiply(__pyx_t_3, __pyx_v_M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PySlice_New(__pyx_t_2, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3308, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_s = __pyx_t_3; __pyx_t_3 = 0;
+3309: B = Array(np.zeros((nClass, M, nClass, M)))
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_Array); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_M); __Pyx_INCREF(__pyx_v_nClass); __Pyx_GIVEREF(__pyx_v_nClass); PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_v_nClass); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_v_M); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_2 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_8, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_5, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3309, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_B = __pyx_t_3; __pyx_t_3 = 0;
+3310: l = self.construct_l(x)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_l); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_2, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_x); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3310, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_v_l = __pyx_t_3; __pyx_t_3 = 0;
+3311: p = sympy.Matrix( sympy.symarray('p', (parameters.shape[0], parameters.shape[1]) )) ## epi-p
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_sympy); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sympy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_symarray); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[0])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_parameters->dimensions[1])); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8); __pyx_t_5 = 0; __pyx_t_8 = 0; __pyx_t_8 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_p, __pyx_t_9}; __pyx_t_7 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_p, __pyx_t_9}; __pyx_t_7 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_n_u_p); __Pyx_GIVEREF(__pyx_n_u_p); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_6, __pyx_n_u_p); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_6, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3311, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_p = __pyx_t_3; __pyx_t_3 = 0;
+3312: if self.constant_terms.size > 0:
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3312, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3312, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3312, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_10) { /* … */ }
+3313: for i in range(constant_terms.shape[0]):
__pyx_t_11 = (__pyx_v_constant_terms->dimensions[0]);
__pyx_t_12 = __pyx_t_11;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_i = __pyx_t_13;
+3314: rate_index = constant_terms[i, 0]
__pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_0); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_constant_terms), __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3314, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_rate_index, __pyx_t_2); __pyx_t_2 = 0;
+3315: class_index = constant_terms[i, 1]
__pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_int_1); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_constant_terms), __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3315, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_XDECREF_SET(__pyx_v_class_index, __pyx_t_2); __pyx_t_2 = 0;
+3316: rate = p[rate_index,:]
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_rate_index); __Pyx_GIVEREF(__pyx_v_rate_index); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_rate_index); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__2); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_p, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3316, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_rate, __pyx_t_3); __pyx_t_3 = 0;
+3317: for m in range(M):
__pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) { __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_14 = 0; __pyx_t_15 = NULL; } else { __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_15 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3317, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; for (;;) { if (likely(!__pyx_t_15)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3317, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } else { if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_3); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3317, __pyx_L1_error) #else __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3317, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif } } else { __pyx_t_3 = __pyx_t_15(__pyx_t_2); if (unlikely(!__pyx_t_3)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3317, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_3); } __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_3); __pyx_t_3 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; }
+3318: B[class_index, m, class_index, m] += rate[m]/N
__pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_class_index); __Pyx_GIVEREF(__pyx_v_class_index); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_class_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_class_index); __Pyx_GIVEREF(__pyx_v_class_index); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_class_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_m); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_N); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3318, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_3, __pyx_t_5) < 0)) __PYX_ERR(0, 3318, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3319: B[nClass-1, m, nClass-1, m] += rate[m]/N
__pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_v_nClass, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyInt_SubtractObjC(__pyx_v_nClass, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_3); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_m); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_5); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_v_m); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_7 = PyFloat_FromDouble(__pyx_v_N); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3319, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_9, __pyx_t_7) < 0)) __PYX_ERR(0, 3319, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+3320: for i in range(infection_terms.shape[0]):
__pyx_t_11 = (__pyx_v_infection_terms->dimensions[0]);
__pyx_t_12 = __pyx_t_11;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_i = __pyx_t_13;
+3321: product_index = infection_terms[i, 2]
__pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3321, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_product_index, __pyx_t_2); __pyx_t_2 = 0;
+3322: infective_index = infection_terms[i, 1]
__pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_1); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3322, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_infective_index, __pyx_t_2); __pyx_t_2 = 0;
+3323: rate_index = infection_terms[i, 0]
__pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_0); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_infection_terms), __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3323, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_rate_index, __pyx_t_2); __pyx_t_2 = 0;
+3324: rate = p[rate_index,:]
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_rate_index); __Pyx_GIVEREF(__pyx_v_rate_index); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_rate_index); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__2); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_p, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3324, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_rate, __pyx_t_9); __pyx_t_9 = 0;
+3325: for m in range(M):
__pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (likely(PyList_CheckExact(__pyx_t_9)) || PyTuple_CheckExact(__pyx_t_9)) { __pyx_t_2 = __pyx_t_9; __Pyx_INCREF(__pyx_t_2); __pyx_t_14 = 0; __pyx_t_15 = NULL; } else { __pyx_t_14 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_15 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3325, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; for (;;) { if (likely(!__pyx_t_15)) { if (likely(PyList_CheckExact(__pyx_t_2))) { if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_9); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3325, __pyx_L1_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } else { if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_2)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_14); __Pyx_INCREF(__pyx_t_9); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3325, __pyx_L1_error) #else __pyx_t_9 = PySequence_ITEM(__pyx_t_2, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3325, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif } } else { __pyx_t_9 = __pyx_t_15(__pyx_t_2); if (unlikely(!__pyx_t_9)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3325, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_9); } __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_9); __pyx_t_9 = 0; /* … */ } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; }
+3326: B[S_index, m, S_index, m] += rate[m]*l[i, m]*s[m]
__pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_S_index); __Pyx_GIVEREF(__pyx_v_S_index); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_S_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_S_index); __Pyx_GIVEREF(__pyx_v_S_index); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_S_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_v_m); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_m); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_l, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_s, __pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_9, __pyx_t_5) < 0)) __PYX_ERR(0, 3326, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+3327: if product_index>-1:
__pyx_t_9 = PyObject_RichCompare(__pyx_v_product_index, __pyx_int_neg_1, Py_GT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3327, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3327, __pyx_L1_error) __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (__pyx_t_10) { /* … */ }
+3328: B[S_index, m, product_index, m] -= rate[m]*l[i, m]*s[m]
__pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_S_index); __Pyx_GIVEREF(__pyx_v_S_index); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_S_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_v_m); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_m); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_l, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_s, __pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_InPlaceSubtract(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_9, __pyx_t_7) < 0)) __PYX_ERR(0, 3328, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+3329: B[product_index, m, product_index, m] += rate[m]*l[i, m]*s[m]
__pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_v_m); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_m); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_l, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_s, __pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_9, __pyx_t_5) < 0)) __PYX_ERR(0, 3329, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+3330: B[product_index, m, S_index, m] -= rate[m]*l[i, m]*s[m]
__pyx_t_9 = PyTuple_New(4); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_S_index); __Pyx_GIVEREF(__pyx_v_S_index); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_v_S_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_v_m); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_7 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_m); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_l, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_s, __pyx_v_m); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyNumber_InPlaceSubtract(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_9, __pyx_t_7) < 0)) __PYX_ERR(0, 3330, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+3331: for i in range(linear_terms.shape[0]):
__pyx_t_11 = (__pyx_v_linear_terms->dimensions[0]);
__pyx_t_12 = __pyx_t_11;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_i = __pyx_t_13;
+3332: product_index = linear_terms[i, 2]
__pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_terms), __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3332, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_product_index, __pyx_t_2); __pyx_t_2 = 0;
+3333: reagent_index = linear_terms[i, 1]
__pyx_t_2 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_1); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_terms), __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3333, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_reagent_index, __pyx_t_2); __pyx_t_2 = 0;
+3334: reagent = x[:,reagent_index*M:(reagent_index+1)*M]
__pyx_t_2 = PyNumber_Multiply(__pyx_v_reagent_index, __pyx_v_M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_9 = __Pyx_PyInt_AddObjC(__pyx_v_reagent_index, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = PyNumber_Multiply(__pyx_t_9, __pyx_v_M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PySlice_New(__pyx_t_2, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_slice__2); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_x, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3334, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_reagent, __pyx_t_9); __pyx_t_9 = 0;
+3335: rate_index = linear_terms[i, 0]
__pyx_t_9 = __Pyx_PyInt_From_Py_intptr_t(__pyx_v_i); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __Pyx_INCREF(__pyx_int_0); __Pyx_GIVEREF(__pyx_int_0); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_0); __pyx_t_9 = 0; __pyx_t_9 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_linear_terms), __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3335, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_XDECREF_SET(__pyx_v_rate_index, __pyx_t_9); __pyx_t_9 = 0;
+3336: rate = p[rate_index,:]
__pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_rate_index); __Pyx_GIVEREF(__pyx_v_rate_index); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_rate_index); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_slice__2); __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_p, __pyx_t_9); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3336, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_XDECREF_SET(__pyx_v_rate, __pyx_t_7); __pyx_t_7 = 0;
+3337: for m in range(M): # only fill in the upper triangular form
__pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_M); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) { __pyx_t_9 = __pyx_t_7; __Pyx_INCREF(__pyx_t_9); __pyx_t_14 = 0; __pyx_t_15 = NULL; } else { __pyx_t_14 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_15 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3337, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; for (;;) { if (likely(!__pyx_t_15)) { if (likely(PyList_CheckExact(__pyx_t_9))) { if (__pyx_t_14 >= PyList_GET_SIZE(__pyx_t_9)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_7); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3337, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } else { if (__pyx_t_14 >= PyTuple_GET_SIZE(__pyx_t_9)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_14); __Pyx_INCREF(__pyx_t_7); __pyx_t_14++; if (unlikely(0 < 0)) __PYX_ERR(0, 3337, __pyx_L1_error) #else __pyx_t_7 = PySequence_ITEM(__pyx_t_9, __pyx_t_14); __pyx_t_14++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3337, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #endif } } else { __pyx_t_7 = __pyx_t_15(__pyx_t_9); if (unlikely(!__pyx_t_7)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3337, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_7); } __Pyx_XDECREF_SET(__pyx_v_m, __pyx_t_7); __pyx_t_7 = 0; /* … */ } __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; }
+3338: B[reagent_index, m, reagent_index, m] += rate[m]*reagent[m]
__pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_reagent_index); __Pyx_GIVEREF(__pyx_v_reagent_index); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_reagent_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_reagent_index); __Pyx_GIVEREF(__pyx_v_reagent_index); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_reagent_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_v_m); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_reagent, __pyx_v_m); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyNumber_Multiply(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3338, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_7, __pyx_t_5) < 0)) __PYX_ERR(0, 3338, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3339: if product_index>-1:
__pyx_t_7 = PyObject_RichCompare(__pyx_v_product_index, __pyx_int_neg_1, Py_GT); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3339, __pyx_L1_error) __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 3339, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (__pyx_t_10) { /* … */ }
+3340: B[product_index, m, product_index, m] += rate[m]*reagent[m]
__pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_v_m); __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_reagent, __pyx_v_m); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3340, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_7, __pyx_t_2) < 0)) __PYX_ERR(0, 3340, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3341: B[reagent_index, m, product_index, m] += -rate[m]*reagent[m]
__pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_reagent_index); __Pyx_GIVEREF(__pyx_v_reagent_index); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_reagent_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_v_m); __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyNumber_Negative(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_reagent, __pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyNumber_Multiply(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3341, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_7, __pyx_t_4) < 0)) __PYX_ERR(0, 3341, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3342: B[product_index, m, reagent_index, m] += -rate[m]*reagent[m] ## make sure the symmetrising method reassigns the Lower traingular elem
__pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_product_index); __Pyx_GIVEREF(__pyx_v_product_index); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_product_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_m); __Pyx_INCREF(__pyx_v_reagent_index); __Pyx_GIVEREF(__pyx_v_reagent_index); PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_v_reagent_index); __Pyx_INCREF(__pyx_v_m); __Pyx_GIVEREF(__pyx_v_m); PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_v_m); __pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_B, __pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_rate, __pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyNumber_Negative(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_reagent, __pyx_v_m); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(PyObject_SetItem(__pyx_v_B, __pyx_t_7, __pyx_t_3) < 0)) __PYX_ERR(0, 3342, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+3343: B=B.reshape(self.dim, self.dim)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_B, __pyx_n_s_reshape); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5}; __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5}; __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_2 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (__pyx_t_4) { __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_4); __pyx_t_4 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_6, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_6, __pyx_t_5); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3343, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF_SET(__pyx_v_B, __pyx_t_9); __pyx_t_9 = 0;
+3344: return B
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_B); __pyx_r = __pyx_v_B; goto __pyx_L0;
3345:
3346:
+3347: def dAd(self, p, return_x0_deriv=False, keys=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_25dAd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_24dAd[] = "\n constructs Spp B. param is a string or sympy symbol. Most likely you'll wish to use 'all' string\n keys can be passed as a integer 0,1 numpy array which selects the parameters to be used for FIM calculation\n p is a sympy array which contains epi parameters. nParams*M due to age dependence\n [dAdp]_ij = dA_j/dp_i\n ";
static PyObject *__pyx_pw_6pyross_9inference_3Spp_25dAd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_p = 0;
CYTHON_UNUSED PyObject *__pyx_v_return_x0_deriv = 0;
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("dAd (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,&__pyx_n_s_return_x0_deriv,&__pyx_n_s_keys,0};
PyObject* values[3] = {0,0,0};
values[1] = ((PyObject *)Py_False);
values[2] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_p)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_return_x0_deriv);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys);
if (value) { values[2] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dAd") < 0)) __PYX_ERR(0, 3347, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_p = values[0];
__pyx_v_return_x0_deriv = values[1];
__pyx_v_keys = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("dAd", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3347, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.Spp.dAd", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_24dAd(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), __pyx_v_p, __pyx_v_return_x0_deriv, __pyx_v_keys);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_24dAd(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_p, CYTHON_UNUSED PyObject *__pyx_v_return_x0_deriv, PyObject *__pyx_v_keys) {
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_nClass;
PyObject *__pyx_v_x = NULL;
PyObject *__pyx_v_no_inferred_params = NULL;
PyObject *__pyx_v_dAdp = NULL;
PyObject *__pyx_v_rows = NULL;
PyObject *__pyx_v_cols = NULL;
PyObject *__pyx_v_k = NULL;
PyObject *__pyx_v_r = NULL;
PyObject *__pyx_v_c = NULL;
PyObject *__pyx_v_param = NULL;
PyObject *__pyx_v_dAdx = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("dAd", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.Spp.dAd", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XDECREF(__pyx_v_no_inferred_params);
__Pyx_XDECREF(__pyx_v_dAdp);
__Pyx_XDECREF(__pyx_v_rows);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XDECREF(__pyx_v_r);
__Pyx_XDECREF(__pyx_v_c);
__Pyx_XDECREF(__pyx_v_param);
__Pyx_XDECREF(__pyx_v_dAdx);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3348: """
3349: constructs Spp B. param is a string or sympy symbol. Most likely you'll wish to use 'all' string
3350: keys can be passed as a integer 0,1 numpy array which selects the parameters to be used for FIM calculation
3351: p is a sympy array which contains epi parameters. nParams*M due to age dependence
3352: [dAdp]_ij = dA_j/dp_i
3353: """
+3354: assert (keys is not None), "Error: integer 1-0 array 'keys' was not passed"
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__pyx_t_1 = (__pyx_v_keys != Py_None);
if (unlikely(!(__pyx_t_1 != 0))) {
PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Error_integer_1_0_array_keys_was);
__PYX_ERR(0, 3354, __pyx_L1_error)
}
}
#endif
+3355: M=self.M
__pyx_t_2 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_2;
+3356: nClass=self.nClass
__pyx_t_2 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_2;
+3357: x=sympy.Matrix( sympy.symarray('x', (nClass, M)))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sympy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_sympy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_symarray); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8); __pyx_t_6 = 0; __pyx_t_8 = 0; __pyx_t_8 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_x, __pyx_t_9}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_x, __pyx_t_9}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_n_u_x); __Pyx_GIVEREF(__pyx_n_u_x); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_n_u_x); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3357, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_x = __pyx_t_3; __pyx_t_3 = 0;
+3358: no_inferred_params = np.sum(keys)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_keys); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3358, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_no_inferred_params = __pyx_t_3; __pyx_t_3 = 0;
+3359: dAdp = Array(np.zeros((no_inferred_params, 1, self.dim)))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_INCREF(__pyx_v_no_inferred_params); __Pyx_GIVEREF(__pyx_v_no_inferred_params); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_no_inferred_params); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_int_1); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_7, __pyx_t_9) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_9); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3359, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_dAdp = __pyx_t_3; __pyx_t_3 = 0;
+3360: rows, cols = np.where(keys==1)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_where); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_v_keys, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3360, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3360, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_4 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) __PYX_ERR(0, 3360, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3360, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_rows = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_cols = __pyx_t_4; __pyx_t_4 = 0;
+3361: for k, (r, c) in enumerate(zip(rows, cols)):
__Pyx_INCREF(__pyx_int_0); __pyx_t_3 = __pyx_int_0; __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_rows); __Pyx_GIVEREF(__pyx_v_rows); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_rows); __Pyx_INCREF(__pyx_v_cols); __Pyx_GIVEREF(__pyx_v_cols); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_cols); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_12 = NULL; } else { __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3361, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3361, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3361, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_12(__pyx_t_4); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3361, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3361, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_9 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_7)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_11(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_7); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_9); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_7), 2) < 0) __PYX_ERR(0, 3361, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3361, __pyx_L1_error) __pyx_L8_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_r, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_c, __pyx_t_9); __pyx_t_9 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3); __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3361, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_5; __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3362: param = p[r,c]
__pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_r); __Pyx_GIVEREF(__pyx_v_r); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_r); __Pyx_INCREF(__pyx_v_c); __Pyx_GIVEREF(__pyx_v_c); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_c); __pyx_t_9 = __Pyx_PyObject_GetItem(__pyx_v_p, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3362, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_param, __pyx_t_9); __pyx_t_9 = 0;
+3363: dAdp[k,:,:] = sympy.diff(self.construct_A_spp(x), param)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sympy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_diff); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_A_spp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_5 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_x); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_v_param}; __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_5, __pyx_v_param}; __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_t_5); __Pyx_INCREF(__pyx_v_param); __Pyx_GIVEREF(__pyx_v_param); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_v_param); __pyx_t_5 = 0; __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_k); __Pyx_GIVEREF(__pyx_v_k); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_k); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__2); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_slice__2); if (unlikely(PyObject_SetItem(__pyx_v_dAdp, __pyx_t_6, __pyx_t_9) < 0)) __PYX_ERR(0, 3363, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+3364: dAdx = sympy.diff(self.construct_A_spp(x), x).reshape(self.dim, 1, self.dim)
__Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_sympy); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_diff); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_A_spp); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_9 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_5, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_x); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_8 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_9, __pyx_v_x}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_t_9, __pyx_v_x}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_10, __pyx_t_9); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_10, __pyx_v_x); __pyx_t_9 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_9 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_t_4, __pyx_int_1, __pyx_t_5}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_9, __pyx_t_4, __pyx_int_1, __pyx_t_5}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_8 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_10, __pyx_t_4); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_10, __pyx_int_1); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_10, __pyx_t_5); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3364, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_dAdx = __pyx_t_3; __pyx_t_3 = 0;
+3365: return dAdp[:,0,:], dAdx[:,0,:]
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_dAdp, __pyx_tuple__44); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_dAdx, __pyx_tuple__44); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3365, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_6); __pyx_t_3 = 0; __pyx_t_6 = 0; __pyx_r = __pyx_t_8; __pyx_t_8 = 0; goto __pyx_L0; /* … */ __pyx_tuple__44 = PyTuple_Pack(3, __pyx_slice__2, __pyx_int_0, __pyx_slice__2); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(0, 3365, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__44); __Pyx_GIVEREF(__pyx_tuple__44);
3366:
3367:
+3368: def dBd(self, p, return_x0_deriv=False, keys=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_3Spp_27dBd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_6pyross_9inference_3Spp_26dBd[] = "\n constructs Spp B. param is a string or sympy symbol. Most likely you'll wish to use 'all' string\n keys can be passed as a integer 0,1 numpy array which selects the parameters to be used for FIM calculation\n p is a sympy array which contains epi parameters. nParams*M due to age dependence\n [dBdp]_ijk = dB_jk/dp_i\n ";
static PyObject *__pyx_pw_6pyross_9inference_3Spp_27dBd(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_p = 0;
CYTHON_UNUSED PyObject *__pyx_v_return_x0_deriv = 0;
PyObject *__pyx_v_keys = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("dBd (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,&__pyx_n_s_return_x0_deriv,&__pyx_n_s_keys,0};
PyObject* values[3] = {0,0,0};
values[1] = ((PyObject *)Py_False);
values[2] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_p)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_return_x0_deriv);
if (value) { values[1] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 2:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_keys);
if (value) { values[2] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dBd") < 0)) __PYX_ERR(0, 3368, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_p = values[0];
__pyx_v_return_x0_deriv = values[1];
__pyx_v_keys = values[2];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("dBd", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3368, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.Spp.dBd", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_3Spp_26dBd(((struct __pyx_obj_6pyross_9inference_Spp *)__pyx_v_self), __pyx_v_p, __pyx_v_return_x0_deriv, __pyx_v_keys);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_3Spp_26dBd(struct __pyx_obj_6pyross_9inference_Spp *__pyx_v_self, PyObject *__pyx_v_p, CYTHON_UNUSED PyObject *__pyx_v_return_x0_deriv, PyObject *__pyx_v_keys) {
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_nClass;
PyObject *__pyx_v_x = NULL;
PyObject *__pyx_v_no_inferred_params = NULL;
PyObject *__pyx_v_dBdp = NULL;
PyObject *__pyx_v_rows = NULL;
PyObject *__pyx_v_cols = NULL;
PyObject *__pyx_v_k = NULL;
PyObject *__pyx_v_r = NULL;
PyObject *__pyx_v_c = NULL;
PyObject *__pyx_v_param = NULL;
PyObject *__pyx_v_dBdx = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("dBd", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.Spp.dBd", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_x);
__Pyx_XDECREF(__pyx_v_no_inferred_params);
__Pyx_XDECREF(__pyx_v_dBdp);
__Pyx_XDECREF(__pyx_v_rows);
__Pyx_XDECREF(__pyx_v_cols);
__Pyx_XDECREF(__pyx_v_k);
__Pyx_XDECREF(__pyx_v_r);
__Pyx_XDECREF(__pyx_v_c);
__Pyx_XDECREF(__pyx_v_param);
__Pyx_XDECREF(__pyx_v_dBdx);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3369: """
3370: constructs Spp B. param is a string or sympy symbol. Most likely you'll wish to use 'all' string
3371: keys can be passed as a integer 0,1 numpy array which selects the parameters to be used for FIM calculation
3372: p is a sympy array which contains epi parameters. nParams*M due to age dependence
3373: [dBdp]_ijk = dB_jk/dp_i
3374: """
+3375: assert (keys is not None), "Error: integer 1-0 'keys' was not passed"
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!Py_OptimizeFlag)) {
__pyx_t_1 = (__pyx_v_keys != Py_None);
if (unlikely(!(__pyx_t_1 != 0))) {
PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_Error_integer_1_0_keys_was_not_p);
__PYX_ERR(0, 3375, __pyx_L1_error)
}
}
#endif
+3376: M=self.M
__pyx_t_2 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_2;
+3377: nClass=self.nClass
__pyx_t_2 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_2;
+3378: x =sympy.Matrix( sympy.symarray('x', (nClass, M)))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_sympy); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_Matrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_sympy); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_symarray); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_8); __pyx_t_6 = 0; __pyx_t_8 = 0; __pyx_t_8 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_x, __pyx_t_9}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) { PyObject *__pyx_temp[3] = {__pyx_t_8, __pyx_n_u_x, __pyx_t_9}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_6 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (__pyx_t_8) { __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL; } __Pyx_INCREF(__pyx_n_u_x); __Pyx_GIVEREF(__pyx_n_u_x); PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_n_u_x); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_t_9); __pyx_t_9 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3378, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_x = __pyx_t_3; __pyx_t_3 = 0;
+3379: no_inferred_params = np.sum(keys)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3379, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_sum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3379, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_keys); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3379, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_no_inferred_params = __pyx_t_3; __pyx_t_3 = 0;
+3380: dBdp = Array(np.zeros((no_inferred_params, self.dim, self.dim)))
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_Array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_INCREF(__pyx_v_no_inferred_params); __Pyx_GIVEREF(__pyx_v_no_inferred_params); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_no_inferred_params); __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_9); __pyx_t_7 = 0; __pyx_t_9 = 0; __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } __pyx_t_5 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_9, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3380, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_dBdp = __pyx_t_3; __pyx_t_3 = 0;
+3381: rows, cols = np.where(keys==1)
__Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_where); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_v_keys, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) { PyObject* sequence = __pyx_t_3; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3381, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_5 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { Py_ssize_t index = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3381, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_6)->tp_iternext; index = 0; __pyx_t_5 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); index = 1; __pyx_t_4 = __pyx_t_11(__pyx_t_6); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_6), 2) < 0) __PYX_ERR(0, 3381, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; goto __pyx_L4_unpacking_done; __pyx_L3_unpacking_failed:; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3381, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v_rows = __pyx_t_5; __pyx_t_5 = 0; __pyx_v_cols = __pyx_t_4; __pyx_t_4 = 0;
+3382: for k, (r, c) in enumerate(zip(rows, cols)):
__Pyx_INCREF(__pyx_int_0); __pyx_t_3 = __pyx_int_0; __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_rows); __Pyx_GIVEREF(__pyx_v_rows); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_rows); __Pyx_INCREF(__pyx_v_cols); __Pyx_GIVEREF(__pyx_v_cols); PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_cols); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) { __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0; __pyx_t_12 = NULL; } else { __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_12 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3382, __pyx_L1_error) } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; for (;;) { if (likely(!__pyx_t_12)) { if (likely(PyList_CheckExact(__pyx_t_4))) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3382, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } else { if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_5); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3382, __pyx_L1_error) #else __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif } } else { __pyx_t_5 = __pyx_t_12(__pyx_t_4); if (unlikely(!__pyx_t_5)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3382, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_5); } if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) { PyObject* sequence = __pyx_t_5; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3382, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_6 = PyList_GET_ITEM(sequence, 0); __pyx_t_8 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); #else __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else { Py_ssize_t index = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_9)->tp_iternext; index = 0; __pyx_t_6 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_6)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_6); index = 1; __pyx_t_8 = __pyx_t_11(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L7_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_9), 2) < 0) __PYX_ERR(0, 3382, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; goto __pyx_L8_unpacking_done; __pyx_L7_unpacking_failed:; __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3382, __pyx_L1_error) __pyx_L8_unpacking_done:; } __Pyx_XDECREF_SET(__pyx_v_r, __pyx_t_6); __pyx_t_6 = 0; __Pyx_XDECREF_SET(__pyx_v_c, __pyx_t_8); __pyx_t_8 = 0; __Pyx_INCREF(__pyx_t_3); __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3); __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3382, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_5; __pyx_t_5 = 0; /* … */ } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+3383: param = p[r,c]
__pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_r); __Pyx_GIVEREF(__pyx_v_r); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_r); __Pyx_INCREF(__pyx_v_c); __Pyx_GIVEREF(__pyx_v_c); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_c); __pyx_t_8 = __Pyx_PyObject_GetItem(__pyx_v_p, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3383, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_XDECREF_SET(__pyx_v_param, __pyx_t_8); __pyx_t_8 = 0;
+3384: dBdp[k,:,:] = sympy.diff(self.construct_B_spp(x), param)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_sympy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_diff); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_B_spp); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_9); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_9, function); } } __pyx_t_5 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_9, __pyx_t_7, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_v_x); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_v_param}; __pyx_t_8 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_9, __pyx_t_5, __pyx_v_param}; __pyx_t_8 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_9) { __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_9); __pyx_t_9 = NULL; } __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_10, __pyx_t_5); __Pyx_INCREF(__pyx_v_param); __Pyx_GIVEREF(__pyx_v_param); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_10, __pyx_v_param); __pyx_t_5 = 0; __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_INCREF(__pyx_v_k); __Pyx_GIVEREF(__pyx_v_k); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_k); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__2); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_slice__2); if (unlikely(PyObject_SetItem(__pyx_v_dBdp, __pyx_t_6, __pyx_t_8) < 0)) __PYX_ERR(0, 3384, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+3385: dBdx = sympy.diff(self.construct_B_spp(x), x).reshape(self.dim, self.dim, self.dim)
__Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_sympy); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_diff); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_construct_B_spp); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_8 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_5, __pyx_v_x) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_x); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_8, __pyx_v_x}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_7, __pyx_t_8, __pyx_v_x}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 2+__pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_10, __pyx_t_8); __Pyx_INCREF(__pyx_v_x); __Pyx_GIVEREF(__pyx_v_x); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_10, __pyx_v_x); __pyx_t_8 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_reshape); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_7 = NULL; __pyx_t_10 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_10 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_4, __pyx_t_5, __pyx_t_8}; __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[4] = {__pyx_t_7, __pyx_t_4, __pyx_t_5, __pyx_t_8}; __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_10, 3+__pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_9 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_10, __pyx_t_8); __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_8 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3385, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_dBdx = __pyx_t_3; __pyx_t_3 = 0;
+3386: return dBdp, dBdx
__Pyx_XDECREF(__pyx_r); __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3386, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_INCREF(__pyx_v_dBdp); __Pyx_GIVEREF(__pyx_v_dBdp); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_dBdp); __Pyx_INCREF(__pyx_v_dBdx); __Pyx_GIVEREF(__pyx_v_dBdx); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_dBdx); __pyx_r = __pyx_t_3; __pyx_t_3 = 0; goto __pyx_L0;
3387:
3388:
3389: @cython.wraparound(False)
3390: @cython.boundscheck(False)
3391: @cython.cdivision(True)
3392: @cython.nonecheck(False)
+3393: cdef class SppQ(SIR_type):
struct __pyx_obj_6pyross_9inference_SppQ {
struct __pyx_obj_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *constant_terms;
PyArrayObject *linear_terms;
PyArrayObject *infection_terms;
PyArrayObject *test_pos;
PyArrayObject *test_freq;
PyArrayObject *parameters;
PyObject *param_keys;
Py_ssize_t nClassU;
Py_ssize_t nClassUwoN;
struct __pyx_obj_6pyross_13deterministic_SppQ *det_model;
PyObject *testRate;
};
/* … */
struct __pyx_vtabstruct_6pyross_9inference_SppQ {
struct __pyx_vtabstruct_6pyross_9inference_SIR_type __pyx_base;
PyArrayObject *(*_get_rq_from_x)(struct __pyx_obj_6pyross_9inference_SppQ *, PyArrayObject *);
PyObject *(*calculate_test_r)(struct __pyx_obj_6pyross_9inference_SppQ *, __Pyx_memviewslice, __Pyx_memviewslice, double);
PyObject *(*fill_lambdas)(struct __pyx_obj_6pyross_9inference_SppQ *, __Pyx_memviewslice, __Pyx_memviewslice);
PyObject *(*jacobian)(struct __pyx_obj_6pyross_9inference_SppQ *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, double, double);
PyObject *(*noise_correlation)(struct __pyx_obj_6pyross_9inference_SppQ *, __Pyx_memviewslice, __Pyx_memviewslice, __Pyx_memviewslice, double);
};
static struct __pyx_vtabstruct_6pyross_9inference_SppQ *__pyx_vtabptr_6pyross_9inference_SppQ;
3394: """User-defined epidemic model with quarantine stage.
3395:
3396: To initialise the SppQ model,
3397:
3398: Parameters
3399: ----------
3400: model_spec: dict
3401: A dictionary specifying the model. See `Examples`.
3402: parameters: dict
3403: A dictionary containing the model parameters.
3404: All parameters can be float if not age-dependent, and np.array(M,) if age-dependent
3405: testRate: python function
3406: number of tests per day and age group
3407: M: int
3408: Number of age groups.
3409: fi: np.array(M) or list
3410: Fraction of each age group.
3411: N: int
3412: Total population.
3413: steps: int
3414: The number of internal integration steps performed between the observed points (not used in tangent space inference).
3415: The minimal is 4, as required by the cubic spline fit used for interpolation.
3416: For robustness, set steps to be large, det_method='LSODA', lyapunov_method='LSODA'.
3417: For speed, set steps to be 4, det_method='RK2', lyapunov_method='euler'.
3418: For a combination of the two, choose something in between.
3419: det_method: str, optional
3420: The integration method used for deterministic integration.
3421: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
3422: lyapunov_method: str, optional
3423: The integration method used for the integration of the Lyapunov equation for the covariance.
3424: Choose one of 'LSODA', 'RK45', 'RK2' and 'euler'. Default is 'LSODA'.
3425:
3426:
3427: See `SIR_type` for a table of all the methods
3428:
3429: Examples
3430: --------
3431: An example of model_spec and parameters for SIR class with a constant influx,
3432: random testing (without false positives/negatives), and quarantine
3433:
3434: >>> model_spec = {
3435: "classes" : ["S", "I"],
3436: "S" : {
3437: "infection" : [ ["I", "-beta"] ]
3438: },
3439: "I" : {
3440: "linear" : [ ["I", "-gamma"] ],
3441: "infection" : [ ["I", "beta"] ]
3442: },
3443: "test_pos" : [ "p_falsepos", "p_truepos", "p_falsepos"] ,
3444: "test_freq" : [ "tf", "tf", "tf"]
3445: }
3446: >>> parameters = {
3447: 'beta': 0.1,
3448: 'gamma': 0.1,
3449: 'p_falsepos': 0
3450: 'p_truepos': 1
3451: 'tf': 1
3452: }
3453: """
3454:
3455: cdef:
+3456: readonly np.ndarray constant_terms, linear_terms, infection_terms, test_pos, test_freq
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_14constant_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_14constant_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_14constant_terms___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_14constant_terms___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->constant_terms));
__pyx_r = ((PyObject *)__pyx_v_self->constant_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_12linear_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_12linear_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_12linear_terms___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_12linear_terms___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->linear_terms));
__pyx_r = ((PyObject *)__pyx_v_self->linear_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_15infection_terms_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_15infection_terms_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_15infection_terms___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_15infection_terms___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->infection_terms));
__pyx_r = ((PyObject *)__pyx_v_self->infection_terms);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_8test_pos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_8test_pos_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_8test_pos___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_8test_pos___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->test_pos));
__pyx_r = ((PyObject *)__pyx_v_self->test_pos);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_9test_freq_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_9test_freq_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_9test_freq___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_9test_freq___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->test_freq));
__pyx_r = ((PyObject *)__pyx_v_self->test_freq);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3457: readonly np.ndarray parameters
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_10parameters_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_10parameters_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_10parameters___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_10parameters___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->parameters));
__pyx_r = ((PyObject *)__pyx_v_self->parameters);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3458: readonly list param_keys
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_10param_keys_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_10param_keys_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_10param_keys___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_10param_keys___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->param_keys);
__pyx_r = __pyx_v_self->param_keys;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3459: readonly Py_ssize_t nClassU, nClassUwoN
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_7nClassU_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_7nClassU_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_7nClassU___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_7nClassU___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->nClassU); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3459, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SppQ.nClassU.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_10nClassUwoN_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_10nClassUwoN_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_10nClassUwoN___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_10nClassUwoN___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->nClassUwoN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3459, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
goto __pyx_L0;
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SppQ.nClassUwoN.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3460: readonly pyross.deterministic.SppQ det_model
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_9det_model_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_9det_model_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_9det_model___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_9det_model___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_self->det_model));
__pyx_r = ((PyObject *)__pyx_v_self->det_model);
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3461: readonly object testRate
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_8testRate_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_8testRate_1__get__(PyObject *__pyx_v_self) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_8testRate___get__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_8testRate___get__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__get__", 0);
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(__pyx_v_self->testRate);
__pyx_r = __pyx_v_self->testRate;
goto __pyx_L0;
/* function exit code */
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3462:
3463:
+3464: def __init__(self, model_spec, parameters, testRate, M, fi, N, steps, det_method='LSODA', lyapunov_method='LSODA'):
/* Python wrapper */
static int __pyx_pw_6pyross_9inference_4SppQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_6pyross_9inference_4SppQ_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
PyObject *__pyx_v_model_spec = 0;
PyObject *__pyx_v_parameters = 0;
PyObject *__pyx_v_testRate = 0;
PyObject *__pyx_v_M = 0;
PyObject *__pyx_v_fi = 0;
PyObject *__pyx_v_N = 0;
PyObject *__pyx_v_steps = 0;
PyObject *__pyx_v_det_method = 0;
PyObject *__pyx_v_lyapunov_method = 0;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_model_spec,&__pyx_n_s_parameters,&__pyx_n_s_testRate,&__pyx_n_s_M,&__pyx_n_s_fi,&__pyx_n_s_N,&__pyx_n_s_steps,&__pyx_n_s_det_method,&__pyx_n_s_lyapunov_method,0};
PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
values[7] = ((PyObject *)__pyx_n_u_LSODA);
values[8] = ((PyObject *)__pyx_n_u_LSODA);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model_spec)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 9, 1); __PYX_ERR(0, 3464, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_testRate)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 9, 2); __PYX_ERR(0, 3464, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 9, 3); __PYX_ERR(0, 3464, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 9, 4); __PYX_ERR(0, 3464, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 9, 5); __PYX_ERR(0, 3464, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (likely((values[6] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 9, 6); __PYX_ERR(0, 3464, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_det_method);
if (value) { values[7] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 8:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_lyapunov_method);
if (value) { values[8] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 3464, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
CYTHON_FALLTHROUGH;
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_model_spec = values[0];
__pyx_v_parameters = values[1];
__pyx_v_testRate = values[2];
__pyx_v_M = values[3];
__pyx_v_fi = values[4];
__pyx_v_N = values[5];
__pyx_v_steps = values[6];
__pyx_v_det_method = values[7];
__pyx_v_lyapunov_method = values[8];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 9, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3464, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SppQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ___init__(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self), __pyx_v_model_spec, __pyx_v_parameters, __pyx_v_testRate, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static int __pyx_pf_6pyross_9inference_4SppQ___init__(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyObject *__pyx_v_model_spec, PyObject *__pyx_v_parameters, PyObject *__pyx_v_testRate, PyObject *__pyx_v_M, PyObject *__pyx_v_fi, PyObject *__pyx_v_N, PyObject *__pyx_v_steps, PyObject *__pyx_v_det_method, PyObject *__pyx_v_lyapunov_method) {
PyObject *__pyx_v_res = NULL;
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__init__", 0);
/* … */
/* function exit code */
__pyx_r = 0;
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SppQ.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_res);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3465: self.param_keys = list(parameters.keys())
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_parameters, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3465, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->param_keys); __Pyx_DECREF(__pyx_v_self->param_keys); __pyx_v_self->param_keys = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+3466: res = pyross.utils.parse_model_spec(model_spec, self.param_keys)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyross); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_utils); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_parse_model_spec); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_model_spec, __pyx_v_self->param_keys}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3466, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[3] = {__pyx_t_3, __pyx_v_model_spec, __pyx_v_self->param_keys}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3466, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); } else #endif { __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_model_spec); __Pyx_GIVEREF(__pyx_v_model_spec); PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_model_spec); __Pyx_INCREF(__pyx_v_self->param_keys); __Pyx_GIVEREF(__pyx_v_self->param_keys); PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_self->param_keys); __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3466, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_res = __pyx_t_2; __pyx_t_2 = 0;
+3467: self.nClass = res[0]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3467, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3467, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_self->__pyx_base.nClass = __pyx_t_6;
+3468: self.class_index_dict = res[1]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3468, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(PyDict_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_t_2)->tp_name), 0))) __PYX_ERR(0, 3468, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->__pyx_base.class_index_dict); __Pyx_DECREF(__pyx_v_self->__pyx_base.class_index_dict); __pyx_v_self->__pyx_base.class_index_dict = ((PyObject*)__pyx_t_2); __pyx_t_2 = 0;
+3469: self.constant_terms = res[2]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3469, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3469, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->constant_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->constant_terms)); __pyx_v_self->constant_terms = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+3470: self.linear_terms = res[3]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3470, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3470, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->linear_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->linear_terms)); __pyx_v_self->linear_terms = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+3471: self.infection_terms = res[4]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3471, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3471, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->infection_terms); __Pyx_DECREF(((PyObject *)__pyx_v_self->infection_terms)); __pyx_v_self->infection_terms = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+3472: self.test_pos = res[5]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3472, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3472, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->test_pos); __Pyx_DECREF(((PyObject *)__pyx_v_self->test_pos)); __pyx_v_self->test_pos = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+3473: self.test_freq = res[6]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_res, 6, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3473, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3473, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->test_freq); __Pyx_DECREF(((PyObject *)__pyx_v_self->test_freq)); __pyx_v_self->test_freq = ((PyArrayObject *)__pyx_t_2); __pyx_t_2 = 0;
+3474: super().__init__(parameters, self.nClass, M, fi, N, steps, det_method, lyapunov_method)
__pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SppQ)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SppQ)); PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SppQ)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self)); __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_init); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.nClass); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = NULL; __pyx_t_4 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_1, function); __pyx_t_4 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_t_5, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3474, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) { PyObject *__pyx_temp[9] = {__pyx_t_3, __pyx_v_parameters, __pyx_t_5, __pyx_v_M, __pyx_v_fi, __pyx_v_N, __pyx_v_steps, __pyx_v_det_method, __pyx_v_lyapunov_method}; __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_4, 8+__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3474, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; } else #endif { __pyx_t_7 = PyTuple_New(8+__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_3) { __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL; } __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_4, __pyx_v_parameters); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_4, __pyx_v_M); __Pyx_INCREF(__pyx_v_fi); __Pyx_GIVEREF(__pyx_v_fi); PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_4, __pyx_v_fi); __Pyx_INCREF(__pyx_v_N); __Pyx_GIVEREF(__pyx_v_N); PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_4, __pyx_v_N); __Pyx_INCREF(__pyx_v_steps); __Pyx_GIVEREF(__pyx_v_steps); PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_4, __pyx_v_steps); __Pyx_INCREF(__pyx_v_det_method); __Pyx_GIVEREF(__pyx_v_det_method); PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_4, __pyx_v_det_method); __Pyx_INCREF(__pyx_v_lyapunov_method); __Pyx_GIVEREF(__pyx_v_lyapunov_method); PyTuple_SET_ITEM(__pyx_t_7, 7+__pyx_t_4, __pyx_v_lyapunov_method); __pyx_t_5 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3474, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3475: self.det_model = pyross.deterministic.SppQ(model_spec, parameters, M, fi*N)
__pyx_t_2 = PyNumber_Multiply(__pyx_v_fi, __pyx_v_N); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_model_spec); __Pyx_GIVEREF(__pyx_v_model_spec); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_model_spec); __Pyx_INCREF(__pyx_v_parameters); __Pyx_GIVEREF(__pyx_v_parameters); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_parameters); __Pyx_INCREF(__pyx_v_M); __Pyx_GIVEREF(__pyx_v_M); PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_M); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 3, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pyross_13deterministic_SppQ), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3475, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GIVEREF(__pyx_t_2); __Pyx_GOTREF(__pyx_v_self->det_model); __Pyx_DECREF(((PyObject *)__pyx_v_self->det_model)); __pyx_v_self->det_model = ((struct __pyx_obj_6pyross_13deterministic_SppQ *)__pyx_t_2); __pyx_t_2 = 0;
+3476: self.testRate = testRate
__Pyx_INCREF(__pyx_v_testRate); __Pyx_GIVEREF(__pyx_v_testRate); __Pyx_GOTREF(__pyx_v_self->testRate); __Pyx_DECREF(__pyx_v_self->testRate); __pyx_v_self->testRate = __pyx_v_testRate;
+3477: self.det_model.set_testRate(testRate)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_13deterministic_SppQ *)__pyx_v_self->det_model->__pyx_base.__pyx_vtab)->set_testRate(__pyx_v_self->det_model, __pyx_v_testRate, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3477, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3478:
+3479: if self.constant_terms.size > 0:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3479, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3479, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; if (__pyx_t_8) { /* … */ goto __pyx_L3; }
+3480: self.nClassU = self.nClass // 2 # number of unquarantined classes with constant terms
__pyx_v_self->nClassU = (__pyx_v_self->__pyx_base.nClass / 2);
+3481: self.nClassUwoN = self.nClassU - 1
__pyx_v_self->nClassUwoN = (__pyx_v_self->nClassU - 1);
3482: else:
+3483: self.nClassU = (self.nClass - 1) // 2 # number of unquarantined classes w/o constant terms
/*else*/ {
__pyx_v_self->nClassU = ((__pyx_v_self->__pyx_base.nClass - 1) / 2);
+3484: self.nClassUwoN = self.nClassU
__pyx_t_6 = __pyx_v_self->nClassU;
__pyx_v_self->nClassUwoN = __pyx_t_6;
}
__pyx_L3:;
3485:
+3486: def infection_indices(self):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_3infection_indices(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_2infection_indices(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_2infection_indices(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self) {
Py_ssize_t __pyx_v_a;
PyObject *__pyx_v_indices = NULL;
PyObject *__pyx_v_linear_terms_indices = NULL;
PyObject *__pyx_v_term = NULL;
PyObject *__pyx_v_infective_index = NULL;
PyObject *__pyx_v_temp = NULL;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_product_index = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("infection_indices", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SppQ.infection_indices", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_indices);
__Pyx_XDECREF(__pyx_v_linear_terms_indices);
__Pyx_XDECREF(__pyx_v_term);
__Pyx_XDECREF(__pyx_v_infective_index);
__Pyx_XDECREF(__pyx_v_temp);
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_product_index);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3487: cdef Py_ssize_t a = 100
__pyx_v_a = 0x64;
+3488: indices = set()
__pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3488, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_indices = ((PyObject*)__pyx_t_1); __pyx_t_1 = 0;
+3489: linear_terms_indices = list(range(self.linear_terms.shape[0]))
__pyx_t_1 = __Pyx_PyInt_From_Py_intptr_t((__pyx_v_self->linear_terms->dimensions[0])); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3489, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_linear_terms_indices = __pyx_t_1; __pyx_t_1 = 0;
3490:
3491: # Find all the infection terms
+3492: for term in self.infection_terms:
if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self->infection_terms))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self->infection_terms))) { __pyx_t_1 = ((PyObject *)__pyx_v_self->infection_terms); __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(((PyObject *)__pyx_v_self->infection_terms)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3492, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3492, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3492, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3492, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3492, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_term, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3493: infective_index = term[1]
__pyx_t_2 = __Pyx_GetItemInt(__pyx_v_term, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3493, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_XDECREF_SET(__pyx_v_infective_index, __pyx_t_2); __pyx_t_2 = 0;
+3494: indices.add(infective_index)
__pyx_t_5 = PySet_Add(__pyx_v_indices, __pyx_v_infective_index); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 3494, __pyx_L1_error)
3495:
3496: # Find all the terms that turn into infection terms
+3497: a = 100
__pyx_v_a = 0x64;
+3498: while a > 0:
while (1) {
__pyx_t_6 = ((__pyx_v_a > 0) != 0);
if (!__pyx_t_6) break;
+3499: a = 0
__pyx_v_a = 0;
+3500: temp = linear_terms_indices.copy()
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_linear_terms_indices, __pyx_n_s_copy); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3500, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_temp, __pyx_t_1); __pyx_t_1 = 0;
+3501: for i in linear_terms_indices:
if (likely(PyList_CheckExact(__pyx_v_linear_terms_indices)) || PyTuple_CheckExact(__pyx_v_linear_terms_indices)) { __pyx_t_1 = __pyx_v_linear_terms_indices; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0; __pyx_t_4 = NULL; } else { __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_linear_terms_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3501, __pyx_L1_error) } for (;;) { if (likely(!__pyx_t_4)) { if (likely(PyList_CheckExact(__pyx_t_1))) { if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3501, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } else { if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(0, 3501, __pyx_L1_error) #else __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3501, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); #endif } } else { __pyx_t_2 = __pyx_t_4(__pyx_t_1); if (unlikely(!__pyx_t_2)) { PyObject* exc_type = PyErr_Occurred(); if (exc_type) { if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear(); else __PYX_ERR(0, 3501, __pyx_L1_error) } break; } __Pyx_GOTREF(__pyx_t_2); } __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2); __pyx_t_2 = 0; /* … */ } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3502: product_index = self.linear_terms[i, 2]
__pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_i); __Pyx_INCREF(__pyx_int_2); __Pyx_GIVEREF(__pyx_int_2); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_int_2); __pyx_t_7 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->linear_terms), __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3502, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF_SET(__pyx_v_product_index, __pyx_t_7); __pyx_t_7 = 0;
+3503: if product_index in indices:
__pyx_t_6 = (__Pyx_PySet_ContainsTF(__pyx_v_product_index, __pyx_v_indices, Py_EQ)); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 3503, __pyx_L1_error) __pyx_t_8 = (__pyx_t_6 != 0); if (__pyx_t_8) { /* … */ }
+3504: indices.add(self.linear_terms[i, 1])
__pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_INCREF(__pyx_v_i); __Pyx_GIVEREF(__pyx_v_i); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_i); __Pyx_INCREF(__pyx_int_1); __Pyx_GIVEREF(__pyx_int_1); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_int_1); __pyx_t_2 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->linear_terms), __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3504, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_5 = PySet_Add(__pyx_v_indices, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 3504, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3505: temp.pop(i)
__pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_pop); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_7, function); } } __pyx_t_2 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_9, __pyx_v_i) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_i); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3505, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3506: linear_terms_indices = temp
__Pyx_INCREF(__pyx_v_temp); __Pyx_DECREF_SET(__pyx_v_linear_terms_indices, __pyx_v_temp); }
+3507: return list(indices)
__Pyx_XDECREF(__pyx_r); __pyx_t_1 = PySequence_List(__pyx_v_indices); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3507, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
3508:
3509:
3510:
+3511: def set_params(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_5set_params(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_4set_params(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_4set_params(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyObject *__pyx_v_parameters) {
Py_ssize_t __pyx_v_nParams;
PyObject *__pyx_v_i = NULL;
PyObject *__pyx_v_key = NULL;
PyObject *__pyx_v_param = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_params", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.SppQ.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_i);
__Pyx_XDECREF(__pyx_v_key);
__Pyx_XDECREF(__pyx_v_param);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3512: nParams = len(self.param_keys)
__pyx_t_1 = __pyx_v_self->param_keys; __Pyx_INCREF(__pyx_t_1); if (unlikely(__pyx_t_1 == Py_None)) { PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()"); __PYX_ERR(0, 3512, __pyx_L1_error) } __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3512, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_v_nParams = __pyx_t_2;
+3513: self.parameters = np.empty((nParams, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_nParams); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __pyx_t_1 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_1) < 0) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3513, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_1); __Pyx_GOTREF(__pyx_v_self->parameters); __Pyx_DECREF(((PyObject *)__pyx_v_self->parameters)); __pyx_v_self->parameters = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3514: try:
{
/*try:*/ {
/* … */
}
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
__Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
goto __pyx_L8_try_end;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
__Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
/* … */
__Pyx_XGIVEREF(__pyx_t_6);
__Pyx_XGIVEREF(__pyx_t_7);
__Pyx_XGIVEREF(__pyx_t_8);
__Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
goto __pyx_L1_error;
__pyx_L8_try_end:;
}
+3515: for (i, key) in enumerate(self.param_keys):
__Pyx_INCREF(__pyx_int_0); __pyx_t_1 = __pyx_int_0; __pyx_t_5 = __pyx_v_self->param_keys; __Pyx_INCREF(__pyx_t_5); __pyx_t_2 = 0; for (;;) { if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_5)) break; #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 3515, __pyx_L3_error) #else __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3515, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_4); __pyx_t_4 = 0; __Pyx_INCREF(__pyx_t_1); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1); __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3515, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = __pyx_t_4; __pyx_t_4 = 0; /* … */ } __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3516: param = parameters[key]
__pyx_t_4 = __Pyx_PyObject_GetItem(__pyx_v_parameters, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3516, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_param, __pyx_t_4); __pyx_t_4 = 0;
+3517: self.parameters[i] = pyross.utils.age_dep_rates(param, self.M, key)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyross); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3517, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_utils); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3517, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_age_dep_rates); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3517, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_9 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3517, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_9); __pyx_t_10 = NULL; __pyx_t_11 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) { __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_10)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_10); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); __pyx_t_11 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_param, __pyx_t_9, __pyx_v_key}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 3+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3517, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) { PyObject *__pyx_temp[4] = {__pyx_t_10, __pyx_v_param, __pyx_t_9, __pyx_v_key}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_11, 3+__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3517, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } else #endif { __pyx_t_12 = PyTuple_New(3+__pyx_t_11); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3517, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_12); if (__pyx_t_10) { __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_10); __pyx_t_10 = NULL; } __Pyx_INCREF(__pyx_v_param); __Pyx_GIVEREF(__pyx_v_param); PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_v_param); __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_t_9); __Pyx_INCREF(__pyx_v_key); __Pyx_GIVEREF(__pyx_v_key); PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_11, __pyx_v_key); __pyx_t_9 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3517, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; } __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->parameters), __pyx_v_i, __pyx_t_4) < 0)) __PYX_ERR(0, 3517, __pyx_L3_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3518: except KeyError:
__pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError); if (__pyx_t_11) { __Pyx_AddTraceback("pyross.inference.SppQ.set_params", __pyx_clineno, __pyx_lineno, __pyx_filename); if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 3518, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_5); __Pyx_GOTREF(__pyx_t_4);
+3519: raise Exception('The parameters passed does not contain certain keys. The keys are {}'.format(self.param_keys))
__pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_kp_u_The_parameters_passed_does_not_c, __pyx_n_s_format); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3519, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_12); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_12); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_12, function); } } __pyx_t_3 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_12, __pyx_t_9, __pyx_v_self->param_keys) : __Pyx_PyObject_CallOneArg(__pyx_t_12, __pyx_v_self->param_keys); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3519, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyObject_CallOneArg(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3519, __pyx_L5_except_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_Raise(__pyx_t_12, 0, 0, 0); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __PYX_ERR(0, 3519, __pyx_L5_except_error) } goto __pyx_L5_except_error; __pyx_L5_except_error:;
3520:
+3521: def set_testRate(self, testRate):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_7set_testRate(PyObject *__pyx_v_self, PyObject *__pyx_v_testRate); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_7set_testRate(PyObject *__pyx_v_self, PyObject *__pyx_v_testRate) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_testRate (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_6set_testRate(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self), ((PyObject *)__pyx_v_testRate));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_6set_testRate(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyObject *__pyx_v_testRate) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("set_testRate", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_AddTraceback("pyross.inference.SppQ.set_testRate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3522: self.testRate=testRate
__Pyx_INCREF(__pyx_v_testRate); __Pyx_GIVEREF(__pyx_v_testRate); __Pyx_GOTREF(__pyx_v_self->testRate); __Pyx_DECREF(__pyx_v_self->testRate); __pyx_v_self->testRate = __pyx_v_testRate;
+3523: self.det_model.set_testRate(testRate)
__pyx_t_1 = ((struct __pyx_vtabstruct_6pyross_13deterministic_SppQ *)__pyx_v_self->det_model->__pyx_base.__pyx_vtab)->set_testRate(__pyx_v_self->det_model, __pyx_v_testRate, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3523, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3524:
+3525: def integrate(self, double [:] x0, double t1, double t2, Py_ssize_t steps, model, contactMatrix, method=None, maxNumSteps=100000):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_9integrate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_9integrate(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
__Pyx_memviewslice __pyx_v_x0 = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_t1;
double __pyx_v_t2;
Py_ssize_t __pyx_v_steps;
PyObject *__pyx_v_model = 0;
PyObject *__pyx_v_contactMatrix = 0;
PyObject *__pyx_v_method = 0;
PyObject *__pyx_v_maxNumSteps = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("integrate (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x0,&__pyx_n_s_t1,&__pyx_n_s_t2,&__pyx_n_s_steps,&__pyx_n_s_model,&__pyx_n_s_contactMatrix,&__pyx_n_s_method,&__pyx_n_s_maxNumSteps,0};
PyObject* values[8] = {0,0,0,0,0,0,0,0};
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)__pyx_int_100000);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
CYTHON_FALLTHROUGH;
case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
CYTHON_FALLTHROUGH;
case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
CYTHON_FALLTHROUGH;
case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
CYTHON_FALLTHROUGH;
case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
CYTHON_FALLTHROUGH;
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x0)) != 0)) kw_args--;
else goto __pyx_L5_argtuple_error;
CYTHON_FALLTHROUGH;
case 1:
if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t1)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 1); __PYX_ERR(0, 3525, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 2:
if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_t2)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 2); __PYX_ERR(0, 3525, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 3:
if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_steps)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 3); __PYX_ERR(0, 3525, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 4:
if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_model)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 4); __PYX_ERR(0, 3525, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 5:
if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_contactMatrix)) != 0)) kw_args--;
else {
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, 5); __PYX_ERR(0, 3525, __pyx_L3_error)
}
CYTHON_FALLTHROUGH;
case 6:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_method);
if (value) { values[6] = value; kw_args--; }
}
CYTHON_FALLTHROUGH;
case 7:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_maxNumSteps);
if (value) { values[7] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "integrate") < 0)) __PYX_ERR(0, 3525, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
CYTHON_FALLTHROUGH;
case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
CYTHON_FALLTHROUGH;
case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_x0 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x0.memview)) __PYX_ERR(0, 3525, __pyx_L3_error)
__pyx_v_t1 = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_t1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3525, __pyx_L3_error)
__pyx_v_t2 = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_t2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3525, __pyx_L3_error)
__pyx_v_steps = __Pyx_PyIndex_AsSsize_t(values[3]); if (unlikely((__pyx_v_steps == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3525, __pyx_L3_error)
__pyx_v_model = values[4];
__pyx_v_contactMatrix = values[5];
__pyx_v_method = values[6];
__pyx_v_maxNumSteps = values[7];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("integrate", 0, 6, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3525, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SppQ.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_8integrate(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self), __pyx_v_x0, __pyx_v_t1, __pyx_v_t2, __pyx_v_steps, __pyx_v_model, __pyx_v_contactMatrix, __pyx_v_method, __pyx_v_maxNumSteps);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_8integrate(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_x0, double __pyx_v_t1, double __pyx_v_t2, Py_ssize_t __pyx_v_steps, PyObject *__pyx_v_model, PyObject *__pyx_v_contactMatrix, PyObject *__pyx_v_method, PyObject *__pyx_v_maxNumSteps) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("integrate", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SppQ.integrate", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x0, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3526: model.set_testRate(self.testRate)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_model, __pyx_n_s_set_testRate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_self->testRate) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_self->testRate); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3526, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3527: return super().integrate(x0, t1, t2, steps, model, contactMatrix, method, maxNumSteps)
__Pyx_XDECREF(__pyx_r); __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_ptype_6pyross_9inference_SppQ)); __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pyross_9inference_SppQ)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pyross_9inference_SppQ)); __Pyx_INCREF(((PyObject *)__pyx_v_self)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self)); __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_integrate); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __pyx_memoryview_fromslice(__pyx_v_x0, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyFloat_FromDouble(__pyx_v_t1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyFloat_FromDouble(__pyx_v_t2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_steps); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = NULL; __pyx_t_8 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_7)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_7); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_8 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_v_model, __pyx_v_contactMatrix, __pyx_v_method, __pyx_v_maxNumSteps}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 8+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[9] = {__pyx_t_7, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_v_model, __pyx_v_contactMatrix, __pyx_v_method, __pyx_v_maxNumSteps}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_8, 8+__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; } else #endif { __pyx_t_9 = PyTuple_New(8+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); if (__pyx_t_7) { __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL; } __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_8, __pyx_t_6); __Pyx_INCREF(__pyx_v_model); __Pyx_GIVEREF(__pyx_v_model); PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_8, __pyx_v_model); __Pyx_INCREF(__pyx_v_contactMatrix); __Pyx_GIVEREF(__pyx_v_contactMatrix); PyTuple_SET_ITEM(__pyx_t_9, 5+__pyx_t_8, __pyx_v_contactMatrix); __Pyx_INCREF(__pyx_v_method); __Pyx_GIVEREF(__pyx_v_method); PyTuple_SET_ITEM(__pyx_t_9, 6+__pyx_t_8, __pyx_v_method); __Pyx_INCREF(__pyx_v_maxNumSteps); __Pyx_GIVEREF(__pyx_v_maxNumSteps); PyTuple_SET_ITEM(__pyx_t_9, 7+__pyx_t_8, __pyx_v_maxNumSteps); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3527, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_r = __pyx_t_1; __pyx_t_1 = 0; goto __pyx_L0;
3528:
+3529: def make_det_model(self, parameters):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_11make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_11make_det_model(PyObject *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model (wrapper)", 0);
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_10make_det_model(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self), ((PyObject *)__pyx_v_parameters));
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_10make_det_model(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyObject *__pyx_v_parameters) {
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_det_model", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_AddTraceback("pyross.inference.SppQ.make_det_model", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3530: # small hack to make this class work with SIR_type
+3531: self.det_model.update_model_parameters(parameters)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->det_model), __pyx_n_s_update_model_parameters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_3)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_parameters) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_parameters); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3531, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+3532: self.det_model.set_testRate(self.testRate)
__pyx_t_1 = __pyx_v_self->testRate; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_13deterministic_SppQ *)__pyx_v_self->det_model->__pyx_base.__pyx_vtab)->set_testRate(__pyx_v_self->det_model, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3532, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3533: return self.det_model
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(((PyObject *)__pyx_v_self->det_model)); __pyx_r = ((PyObject *)__pyx_v_self->det_model); goto __pyx_L0;
3534:
3535:
+3536: def make_params_dict(self, params=None):
/* Python wrapper */
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_13make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static PyObject *__pyx_pw_6pyross_9inference_4SppQ_13make_params_dict(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
CYTHON_UNUSED PyObject *__pyx_v_params = 0;
PyObject *__pyx_r = 0;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict (wrapper)", 0);
{
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_params,0};
PyObject* values[1] = {0};
values[0] = ((PyObject *)Py_None);
if (unlikely(__pyx_kwds)) {
Py_ssize_t kw_args;
const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
switch (pos_args) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
kw_args = PyDict_Size(__pyx_kwds);
switch (pos_args) {
case 0:
if (kw_args > 0) {
PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_params);
if (value) { values[0] = value; kw_args--; }
}
}
if (unlikely(kw_args > 0)) {
if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "make_params_dict") < 0)) __PYX_ERR(0, 3536, __pyx_L3_error)
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
CYTHON_FALLTHROUGH;
case 0: break;
default: goto __pyx_L5_argtuple_error;
}
}
__pyx_v_params = values[0];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
__Pyx_RaiseArgtupleInvalid("make_params_dict", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3536, __pyx_L3_error)
__pyx_L3_error:;
__Pyx_AddTraceback("pyross.inference.SppQ.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
__pyx_r = __pyx_pf_6pyross_9inference_4SppQ_12make_params_dict(((struct __pyx_obj_6pyross_9inference_SppQ *)__pyx_v_self), __pyx_v_params);
/* function exit code */
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
static PyObject *__pyx_pf_6pyross_9inference_4SppQ_12make_params_dict(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_params) {
PyObject *__pyx_v_param_dict = NULL;
PyObject *__pyx_8genexpr7__pyx_v_i = NULL;
PyObject *__pyx_8genexpr7__pyx_v_k = NULL;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("make_params_dict", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_AddTraceback("pyross.inference.SppQ.make_params_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
__Pyx_XDECREF(__pyx_v_param_dict);
__Pyx_XDECREF(__pyx_8genexpr7__pyx_v_i);
__Pyx_XDECREF(__pyx_8genexpr7__pyx_v_k);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
+3537: param_dict = {k:self.parameters[i] for (i, k) in enumerate(self.param_keys)}
{ /* enter inner scope */
__pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3537, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_int_0);
__pyx_t_2 = __pyx_int_0;
__pyx_t_3 = __pyx_v_self->param_keys; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
for (;;) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
__pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 3537, __pyx_L5_error)
#else
__pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3537, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_XDECREF_SET(__pyx_8genexpr7__pyx_v_k, __pyx_t_5);
__pyx_t_5 = 0;
__Pyx_INCREF(__pyx_t_2);
__Pyx_XDECREF_SET(__pyx_8genexpr7__pyx_v_i, __pyx_t_2);
__pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_2, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3537, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2);
__pyx_t_2 = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_self->parameters), __pyx_8genexpr7__pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3537, __pyx_L5_error)
__Pyx_GOTREF(__pyx_t_5);
if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr7__pyx_v_k, (PyObject*)__pyx_t_5))) __PYX_ERR(0, 3537, __pyx_L5_error)
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_XDECREF(__pyx_8genexpr7__pyx_v_i); __pyx_8genexpr7__pyx_v_i = 0;
__Pyx_XDECREF(__pyx_8genexpr7__pyx_v_k); __pyx_8genexpr7__pyx_v_k = 0;
goto __pyx_L8_exit_scope;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_8genexpr7__pyx_v_i); __pyx_8genexpr7__pyx_v_i = 0;
__Pyx_XDECREF(__pyx_8genexpr7__pyx_v_k); __pyx_8genexpr7__pyx_v_k = 0;
goto __pyx_L1_error;
__pyx_L8_exit_scope:;
} /* exit inner scope */
__pyx_v_param_dict = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
+3538: return param_dict
__Pyx_XDECREF(__pyx_r); __Pyx_INCREF(__pyx_v_param_dict); __pyx_r = __pyx_v_param_dict; goto __pyx_L0;
3539:
+3540: cdef np.ndarray _get_r_from_x(self, np.ndarray x):
static PyArrayObject *__pyx_f_6pyross_9inference_4SppQ__get_r_from_x(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyArrayObject *__pyx_v_x) {
PyArrayObject *__pyx_v_r = 0;
PyArrayObject *__pyx_v_xrs = 0;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_get_r_from_x", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SppQ._get_r_from_x", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_r);
__Pyx_XDECREF((PyObject *)__pyx_v_xrs);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3541: cdef:
3542: np.ndarray r
+3543: np.ndarray xrs=x.reshape(int(self.dim/self.M), self.M)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_self->__pyx_base.dim / __pyx_v_self->__pyx_base.M)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3543, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3543, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3543, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3543, __pyx_L1_error) __pyx_v_xrs = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3544: r = self.fi - xrs[-1,:] - np.sum(xrs[:self.nClassUwoN,:], axis=0) # subtract total quarantined and all non-quarantined classes
__pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_xrs), __pyx_tuple__37); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_2 = PyNumber_Subtract(((PyObject *)__pyx_v_self->__pyx_base.fi), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->nClassUwoN); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_3 = PySlice_New(Py_None, __pyx_t_1, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_slice__2); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_xrs), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 3544, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Subtract(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3544, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3544, __pyx_L1_error) __pyx_v_r = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+3545: return r
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_r)); __pyx_r = __pyx_v_r; goto __pyx_L0;
3546:
+3547: cdef np.ndarray _get_rq_from_x(self, np.ndarray x):
static PyArrayObject *__pyx_f_6pyross_9inference_4SppQ__get_rq_from_x(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyArrayObject *__pyx_v_x) {
PyArrayObject *__pyx_v_r = 0;
PyArrayObject *__pyx_v_xrs = 0;
PyArrayObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_get_rq_from_x", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_AddTraceback("pyross.inference.SppQ._get_rq_from_x", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_r);
__Pyx_XDECREF((PyObject *)__pyx_v_xrs);
__Pyx_XGIVEREF((PyObject *)__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3548: cdef:
3549: np.ndarray r
+3550: np.ndarray xrs=x.reshape(int(self.dim/self.M), self.M)
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_x), __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyInt_FromSsize_t((__pyx_v_self->__pyx_base.dim / __pyx_v_self->__pyx_base.M)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyInt_Type)), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = NULL; __pyx_t_6 = 0; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); __pyx_t_6 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3550, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_3}; __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3550, __pyx_L1_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else #endif { __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3); __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3550, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3550, __pyx_L1_error) __pyx_v_xrs = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3551: r = xrs[-1,:] - np.sum(xrs[self.nClassU:-1,:], axis=0) # subtract all quarantined classes
__pyx_t_1 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_xrs), __pyx_tuple__37); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sum); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->nClassU); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PySlice_New(__pyx_t_2, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __Pyx_INCREF(__pyx_slice__2); __Pyx_GIVEREF(__pyx_slice__2); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_slice__2); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_xrs), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_axis, __pyx_int_0) < 0) __PYX_ERR(0, 3551, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3551, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3551, __pyx_L1_error) __pyx_v_r = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+3552: return r
__Pyx_XDECREF(((PyObject *)__pyx_r)); __Pyx_INCREF(((PyObject *)__pyx_v_r)); __pyx_r = __pyx_v_r; goto __pyx_L0;
3553:
+3554: cdef double _penalty_from_negative_values(self, np.ndarray x0):
static double __pyx_f_6pyross_9inference_4SppQ__penalty_from_negative_values(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, PyArrayObject *__pyx_v_x0) {
double __pyx_v_eps;
double __pyx_v_dev;
PyArrayObject *__pyx_v_R_init = 0;
PyArrayObject *__pyx_v_RQ_init = 0;
double __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_penalty_from_negative_values", 0);
/* … */
/* function exit code */
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_WriteUnraisable("pyross.inference.SppQ._penalty_from_negative_values", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
__pyx_r = 0;
__pyx_L0:;
__Pyx_XDECREF((PyObject *)__pyx_v_R_init);
__Pyx_XDECREF((PyObject *)__pyx_v_RQ_init);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3555: cdef:
+3556: double eps=0.1/self.N, dev
__pyx_v_eps = (0.1 / __pyx_v_self->__pyx_base.N);
3557: np.ndarray R_init, RQ_init
+3558: R_init = self._get_r_from_x(x0)
__pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._get_r_from_x(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_x0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3558, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_R_init = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3559: RQ_init = self._get_rq_from_x(x0)
__pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->_get_rq_from_x(__pyx_v_self, __pyx_v_x0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3559, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_RQ_init = ((PyArrayObject *)__pyx_t_1); __pyx_t_1 = 0;
+3560: dev = - (np.sum(R_init[R_init<0]) + np.sum(RQ_init[RQ_init<0]) + np.sum(x0[x0<0]))
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_v_R_init), __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3560, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_R_init), __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) { __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3); if (likely(__pyx_t_2)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3); __Pyx_INCREF(__pyx_t_2); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_3, function); } } __pyx_t_1 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_sum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = PyObject_RichCompare(((PyObject *)__pyx_v_RQ_init), __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3560, __pyx_L1_error) __pyx_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_RQ_init), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) { __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_4)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_4); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_sum); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = PyObject_RichCompare(((PyObject *)__pyx_v_x0), __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3560, __pyx_L1_error) __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_x0), __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_1 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_1)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_1); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_1, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyNumber_Negative(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3560, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_dev = __pyx_t_6;
+3561: return (dev/eps)**2 + (dev/eps)**8
__pyx_r = (pow((__pyx_v_dev / __pyx_v_eps), 2.0) + pow((__pyx_v_dev / __pyx_v_eps), 8.0)); goto __pyx_L0;
3562:
+3563: cdef calculate_test_r(self, double [:] x, double [:] r, double TR):
static PyObject *__pyx_f_6pyross_9inference_4SppQ_calculate_test_r(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_r, double __pyx_v_TR) {
CYTHON_UNUSED Py_ssize_t __pyx_v_nClass;
CYTHON_UNUSED Py_ssize_t __pyx_v_nClassU;
Py_ssize_t __pyx_v_nClassUwoN;
Py_ssize_t __pyx_v_M;
__Pyx_memviewslice __pyx_v_test_freq = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_N;
double __pyx_v_ntestpop;
double __pyx_v_tau0;
__Pyx_memviewslice __pyx_v_parameters = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_i;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("calculate_test_r", 0);
__PYX_INC_MEMVIEW(&__pyx_v_r, 1);
/* … */
/* function exit code */
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__Pyx_XDECREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_t_7);
__Pyx_XDECREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_9);
__Pyx_AddTraceback("pyross.inference.SppQ.calculate_test_r", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_test_freq, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_parameters, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_r, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3564: cdef:
+3565: Py_ssize_t nClass=self.nClass, nClassU=self.nClassU, nClassUwoN=self.nClassUwoN, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_1; __pyx_t_1 = __pyx_v_self->nClassU; __pyx_v_nClassU = __pyx_t_1; __pyx_t_1 = __pyx_v_self->nClassUwoN; __pyx_v_nClassUwoN = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+3566: int [:] test_freq=self.test_freq
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_ds_int(((PyObject *)__pyx_v_self->test_freq), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 3566, __pyx_L1_error) __pyx_v_test_freq = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
+3567: double [:] fi=self.fi
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 3567, __pyx_L1_error) __pyx_v_fi = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+3568: double N = self.N
__pyx_t_4 = __pyx_v_self->__pyx_base.N; __pyx_v_N = __pyx_t_4;
+3569: double ntestpop=0, tau0=0
__pyx_v_ntestpop = 0.0; __pyx_v_tau0 = 0.0;
+3570: double [:, :] parameters=self.parameters
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->parameters), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3570, __pyx_L1_error) __pyx_v_parameters = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
3571: Py_ssize_t m, i
3572:
3573: # Compute non-quarantined recovered
+3574: r = self._get_r_from_x(np.array(x))
__Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_7 = __pyx_memoryview_fromslice(__pyx_v_x, 1, (PyObject *(*)(char *)) __pyx_memview_get_double, (int (*)(char *, PyObject *)) __pyx_memview_set_double, 0);; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __pyx_t_9 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_8))) { __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8); if (likely(__pyx_t_9)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8); __Pyx_INCREF(__pyx_t_9); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_8, function); } } __pyx_t_6 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_t_7) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3574, __pyx_L1_error) __pyx_t_8 = ((PyObject *)((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._get_r_from_x(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), ((PyArrayObject *)__pyx_t_6))); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3574, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_8, PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 3574, __pyx_L1_error) __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __PYX_XDEC_MEMVIEW(&__pyx_v_r, 1); __pyx_v_r = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
3575: # Compute normalisation of testing rates
+3576: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_10 = __pyx_t_1;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_m = __pyx_t_11;
+3577: for i in range(nClassUwoN):
__pyx_t_12 = __pyx_v_nClassUwoN;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_i = __pyx_t_14;
+3578: ntestpop += parameters[test_freq[i], m] * x[i*M+m]
__pyx_t_15 = __pyx_v_i;
__pyx_t_16 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_15 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_17 = __pyx_v_m;
__pyx_t_18 = ((__pyx_v_i * __pyx_v_M) + __pyx_v_m);
__pyx_v_ntestpop = (__pyx_v_ntestpop + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_16 * __pyx_v_parameters.strides[0]) ) + __pyx_t_17 * __pyx_v_parameters.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_18 * __pyx_v_x.strides[0]) )))));
}
+3579: ntestpop += parameters[test_freq[nClassUwoN], m] * r[m]
__pyx_t_19 = __pyx_v_nClassUwoN;
__pyx_t_20 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_19 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_m;
__pyx_v_ntestpop = (__pyx_v_ntestpop + ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_20 * __pyx_v_parameters.strides[0]) ) + __pyx_t_21 * __pyx_v_parameters.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_r.data + __pyx_t_22 * __pyx_v_r.strides[0]) )))));
}
+3580: tau0 = TR / (N * ntestpop)
__pyx_v_tau0 = (__pyx_v_TR / (__pyx_v_N * __pyx_v_ntestpop));
+3581: return ntestpop, tau0
__Pyx_XDECREF(__pyx_r); __pyx_t_8 = PyFloat_FromDouble(__pyx_v_ntestpop); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_6 = PyFloat_FromDouble(__pyx_v_tau0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3581, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_6); __pyx_t_8 = 0; __pyx_t_6 = 0; __pyx_r = __pyx_t_7; __pyx_t_7 = 0; goto __pyx_L0;
3582:
+3583: cdef lyapunov_fun(self, double t, double [:] sig, spline):
static PyObject *__pyx_f_6pyross_9inference_4SppQ_lyapunov_fun(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, double __pyx_v_t, __Pyx_memviewslice __pyx_v_sig, PyObject *__pyx_v_spline) {
__Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_TR;
Py_ssize_t __pyx_v_nClass;
Py_ssize_t __pyx_v_nClassU;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_num_of_infection_terms;
double __pyx_v_ntestpop;
double __pyx_v_tau0;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_r = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("lyapunov_fun", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_6);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_11);
__Pyx_XDECREF(__pyx_t_12);
__Pyx_AddTraceback("pyross.inference.SppQ.lyapunov_fun", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_r, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3584: cdef:
+3585: double [:] x, fi=self.fi
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3585, __pyx_L1_error) __pyx_v_fi = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
3586: double TR
+3587: Py_ssize_t nClass=self.nClass, nClassU=self.nClassU, M=self.M
__pyx_t_2 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_2; __pyx_t_2 = __pyx_v_self->nClassU; __pyx_v_nClassU = __pyx_t_2; __pyx_t_2 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_2;
+3588: Py_ssize_t num_of_infection_terms=self.infection_terms.shape[0]
__pyx_v_num_of_infection_terms = (__pyx_v_self->infection_terms->dimensions[0]);
3589: double ntestpop, tau0
+3590: x = spline(t)
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_spline); __pyx_t_5 = __pyx_v_spline; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_5, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3590, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3590, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_x = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+3591: cdef double [:, :] l=np.zeros((num_of_infection_terms, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_num_of_infection_terms); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4); __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3591, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_l = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+3592: cdef double [:] r=np.zeros(self.M, dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_5, PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3592, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_r = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+3593: if self.constant_terms.size > 0:
__pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3593, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3593, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3593, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (__pyx_t_8) { /* … */ }
+3594: fi = x[(nClassU-1)*M:]
__pyx_t_1.data = __pyx_v_x.data;
__pyx_t_1.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_1, 0);
__pyx_t_9 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_1,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_9,
((__pyx_v_nClassU - 1) * __pyx_v_M),
0,
0,
1,
0,
0,
1) < 0))
{
__PYX_ERR(0, 3594, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__pyx_v_fi = __pyx_t_1;
__pyx_t_1.memview = NULL;
__pyx_t_1.data = NULL;
+3595: TR = self.testRate(t)
__pyx_t_5 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_INCREF(__pyx_v_self->testRate); __pyx_t_4 = __pyx_v_self->testRate; __pyx_t_6 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) { __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_6)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_6); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3595, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3595, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_TR = __pyx_t_10;
+3596: self.B = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_12 = PyTuple_New(4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 2, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 3, __pyx_t_11); __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_12); __pyx_t_12 = 0; __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, __pyx_t_12); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3596, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_6); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B)); __pyx_v_self->__pyx_base.B = ((PyArrayObject *)__pyx_t_6); __pyx_t_6 = 0;
+3597: self.J = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_t_6 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_11); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_11); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_5); __pyx_t_6 = 0; __pyx_t_11 = 0; __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_12, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3597, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J)); __pyx_v_self->__pyx_base.J = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+3598: self.fill_lambdas(x, l)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3598, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3599: ntestpop, tau0 = self.calculate_test_r(x, r, TR)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->calculate_test_r(__pyx_v_self, __pyx_v_x, __pyx_v_r, __pyx_v_TR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) { PyObject* sequence = __pyx_t_4; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3599, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_5 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_5 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_5); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; __pyx_t_12 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_12); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_5 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_5)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_5); if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) __PYX_ERR(0, 3599, __pyx_L1_error) __pyx_t_13 = NULL; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0; __pyx_t_13 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3599, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3599, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_ntestpop = __pyx_t_10; __pyx_v_tau0 = __pyx_t_14;
+3600: self.jacobian(x, l, r, ntestpop, tau0)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_x, __pyx_v_l, __pyx_v_r, __pyx_v_ntestpop, __pyx_v_tau0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3600, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3601: self.noise_correlation(x, l, r, tau0)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_x, __pyx_v_l, __pyx_v_r, __pyx_v_tau0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3601, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+3602: self.compute_dsigdt(sig)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base.compute_dsigdt(((struct __pyx_obj_6pyross_9inference_SIR_type *)__pyx_v_self), __pyx_v_sig); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3602, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3603:
+3604: cdef compute_jacobian_and_b_matrix(self, double [:] x, double t, contactMatrix,
static PyObject *__pyx_f_6pyross_9inference_4SppQ_compute_jacobian_and_b_matrix(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, double __pyx_v_t, PyObject *__pyx_v_contactMatrix, struct __pyx_opt_args_6pyross_9inference_4SppQ_compute_jacobian_and_b_matrix *__pyx_optional_args) {
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_t_5);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_13);
__Pyx_XDECREF(__pyx_t_14);
__Pyx_AddTraceback("pyross.inference.SppQ.compute_jacobian_and_b_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_l, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_r, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
/* … */
struct __pyx_opt_args_6pyross_9inference_4SppQ_compute_jacobian_and_b_matrix {
int __pyx_n;
PyObject *b_matrix;
PyObject *jacobian;
};
+3605: b_matrix=True, jacobian=False):
PyObject *__pyx_v_b_matrix = ((PyObject *)Py_True);
PyObject *__pyx_v_jacobian = ((PyObject *)Py_False);
Py_ssize_t __pyx_v_nClass;
Py_ssize_t __pyx_v_nClassU;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_num_of_infection_terms;
__Pyx_memviewslice __pyx_v_l = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_TR;
double __pyx_v_ntestpop;
double __pyx_v_tau0;
__Pyx_memviewslice __pyx_v_r = { 0, 0, { 0 }, { 0 }, { 0 } };
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("compute_jacobian_and_b_matrix", 0);
if (__pyx_optional_args) {
if (__pyx_optional_args->__pyx_n > 0) {
__pyx_v_b_matrix = __pyx_optional_args->b_matrix;
if (__pyx_optional_args->__pyx_n > 1) {
__pyx_v_jacobian = __pyx_optional_args->jacobian;
}
}
}
3606: cdef:
+3607: Py_ssize_t nClass=self.nClass, nClassU=self.nClassU, M=self.M
__pyx_t_1 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_1; __pyx_t_1 = __pyx_v_self->nClassU; __pyx_v_nClassU = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+3608: Py_ssize_t num_of_infection_terms=self.infection_terms.shape[0]
__pyx_v_num_of_infection_terms = (__pyx_v_self->infection_terms->dimensions[0]);
+3609: double [:, :] l=np.zeros((num_of_infection_terms, self.M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_num_of_infection_terms); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4); __pyx_t_2 = 0; __pyx_t_4 = 0; __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_2) < 0) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(__pyx_t_2, PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 3609, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_v_l = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+3610: double [:] fi=self.fi
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3610, __pyx_L1_error) __pyx_v_fi = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
3611: double TR
3612: double ntestpop, tau0
+3613: double [:] r=np.zeros(self.M, dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.M); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 3613, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3613, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(__pyx_t_3, PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3613, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_r = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
+3614: self.CM = contactMatrix(t)
__pyx_t_2 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(__pyx_v_contactMatrix); __pyx_t_4 = __pyx_v_contactMatrix; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_4, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3614, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3614, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_3); __Pyx_GOTREF(__pyx_v_self->__pyx_base.CM); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.CM)); __pyx_v_self->__pyx_base.CM = ((PyArrayObject *)__pyx_t_3); __pyx_t_3 = 0;
+3615: TR = self.testRate(t)
__pyx_t_4 = PyFloat_FromDouble(__pyx_v_t); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_INCREF(__pyx_v_self->testRate); __pyx_t_2 = __pyx_v_self->testRate; __pyx_t_5 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3615, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3615, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_v_TR = __pyx_t_8;
+3616: if self.constant_terms.size > 0:
__pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3616, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3616, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 3616, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_9) { /* … */ }
+3617: fi = x[(nClassU-1)*M:]
__pyx_t_7.data = __pyx_v_x.data;
__pyx_t_7.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
__pyx_t_10 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_7,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_10,
((__pyx_v_nClassU - 1) * __pyx_v_M),
0,
0,
1,
0,
0,
1) < 0))
{
__PYX_ERR(0, 3617, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__pyx_v_fi = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
+3618: self.fill_lambdas(x, l)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->fill_lambdas(__pyx_v_self, __pyx_v_x, __pyx_v_l); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3618, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+3619: ntestpop, tau0 = self.calculate_test_r(x, r, TR)
__pyx_t_2 = ((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->calculate_test_r(__pyx_v_self, __pyx_v_x, __pyx_v_r, __pyx_v_TR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) { PyObject* sequence = __pyx_t_2; Py_ssize_t size = __Pyx_PySequence_SIZE(sequence); if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); __PYX_ERR(0, 3619, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); __pyx_t_4 = PyTuple_GET_ITEM(sequence, 1); } else { __pyx_t_3 = PyList_GET_ITEM(sequence, 0); __pyx_t_4 = PyList_GET_ITEM(sequence, 1); } __Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4); #else __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #endif __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; } else { Py_ssize_t index = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = Py_TYPE(__pyx_t_5)->tp_iternext; index = 0; __pyx_t_3 = __pyx_t_11(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); index = 1; __pyx_t_4 = __pyx_t_11(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_4); if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_5), 2) < 0) __PYX_ERR(0, 3619, __pyx_L1_error) __pyx_t_11 = NULL; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; goto __pyx_L5_unpacking_done; __pyx_L4_unpacking_failed:; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_11 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); __PYX_ERR(0, 3619, __pyx_L1_error) __pyx_L5_unpacking_done:; } __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 3619, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_v_ntestpop = __pyx_t_8; __pyx_v_tau0 = __pyx_t_12;
+3620: if b_matrix:
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_b_matrix); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 3620, __pyx_L1_error) if (__pyx_t_9) { /* … */ }
+3621: self.B = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_14 = PyTuple_New(4); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_2); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_14, 1, __pyx_t_3); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_14, 2, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_14, 3, __pyx_t_13); __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_5 = 0; __pyx_t_13 = 0; __pyx_t_13 = PyTuple_New(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_14); __pyx_t_14 = 0; __pyx_t_14 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); if (PyDict_SetItem(__pyx_t_14, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_13, __pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3621, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_5); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B)); __pyx_v_self->__pyx_base.B = ((PyArrayObject *)__pyx_t_5); __pyx_t_5 = 0;
+3622: self.noise_correlation(x, l, r, tau0)
__pyx_t_5 = ((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->noise_correlation(__pyx_v_self, __pyx_v_x, __pyx_v_l, __pyx_v_r, __pyx_v_tau0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3622, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+3623: if jacobian:
__pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_jacobian); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 3623, __pyx_L1_error) if (__pyx_t_9) { /* … */ }
+3624: self.J = np.zeros((nClass, M, nClass, M), dtype=DTYPE)
__Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_13); __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_nClass); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_M); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_13); __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_4); __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_3); __pyx_t_5 = 0; __pyx_t_13 = 0; __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_DTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_14, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3624, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_4); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J)); __pyx_v_self->__pyx_base.J = ((PyArrayObject *)__pyx_t_4); __pyx_t_4 = 0;
+3625: self.jacobian(x, l, r, ntestpop, tau0)
__pyx_t_4 = ((struct __pyx_vtabstruct_6pyross_9inference_SppQ *)__pyx_v_self->__pyx_base.__pyx_vtab)->jacobian(__pyx_v_self, __pyx_v_x, __pyx_v_l, __pyx_v_r, __pyx_v_ntestpop, __pyx_v_tau0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3625, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3626:
+3627: cdef fill_lambdas(self, double [:] x, double [:, :] l):
static PyObject *__pyx_f_6pyross_9inference_4SppQ_fill_lambdas(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_l) {
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_infection_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_infective_index;
Py_ssize_t __pyx_v_index;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_num_of_infection_terms;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("fill_lambdas", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__PYX_XDEC_MEMVIEW(&__pyx_t_1, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_2, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__Pyx_AddTraceback("pyross.inference.SppQ.fill_lambdas", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_infection_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3628: cdef:
+3629: double [:, :] CM=self.CM
__pyx_t_1 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_1.memview)) __PYX_ERR(0, 3629, __pyx_L1_error) __pyx_v_CM = __pyx_t_1; __pyx_t_1.memview = NULL; __pyx_t_1.data = NULL;
+3630: int [:, :] infection_terms=self.infection_terms
__pyx_t_2 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->infection_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_2.memview)) __PYX_ERR(0, 3630, __pyx_L1_error) __pyx_v_infection_terms = __pyx_t_2; __pyx_t_2.memview = NULL; __pyx_t_2.data = NULL;
3631: double infection_rate
+3632: double [:] fi=self.fi
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 3632, __pyx_L1_error) __pyx_v_fi = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+3633: Py_ssize_t m, n, i, infective_index, index, M=self.M, num_of_infection_terms=infection_terms.shape[0]
__pyx_t_4 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_4; __pyx_v_num_of_infection_terms = (__pyx_v_infection_terms.shape[0]);
+3634: for i in range(num_of_infection_terms):
__pyx_t_4 = __pyx_v_num_of_infection_terms;
__pyx_t_5 = __pyx_t_4;
for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
__pyx_v_i = __pyx_t_6;
+3635: infective_index = infection_terms[i, 1]
__pyx_t_7 = __pyx_v_i;
__pyx_t_8 = 1;
__pyx_v_infective_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_7 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_8 * __pyx_v_infection_terms.strides[1]) )));
+3636: for m in range(M):
__pyx_t_9 = __pyx_v_M;
__pyx_t_10 = __pyx_t_9;
for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
__pyx_v_m = __pyx_t_11;
+3637: for n in range(M):
__pyx_t_12 = __pyx_v_M;
__pyx_t_13 = __pyx_t_12;
for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
__pyx_v_n = __pyx_t_14;
+3638: index = n + M*infective_index
__pyx_v_index = (__pyx_v_n + (__pyx_v_M * __pyx_v_infective_index));
+3639: l[i, m] += CM[m,n]*x[index]/fi[n]
__pyx_t_15 = __pyx_v_m;
__pyx_t_16 = __pyx_v_n;
__pyx_t_17 = __pyx_v_index;
__pyx_t_18 = __pyx_v_n;
__pyx_t_19 = __pyx_v_i;
__pyx_t_20 = __pyx_v_m;
*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_19 * __pyx_v_l.strides[0]) ) + __pyx_t_20 * __pyx_v_l.strides[1]) )) += (((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_15 * __pyx_v_CM.strides[0]) ) + __pyx_t_16 * __pyx_v_CM.strides[1]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_18 * __pyx_v_fi.strides[0]) ))));
}
}
}
3640:
+3641: cdef jacobian(self, double [:] x, double [:, :] l, double [:] r, double ntestpop, double tau0):
static PyObject *__pyx_f_6pyross_9inference_4SppQ_jacobian(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_l, __Pyx_memviewslice __pyx_v_r, double __pyx_v_ntestpop, double __pyx_v_tau0) {
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_n;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_dim;
Py_ssize_t __pyx_v_nClass;
Py_ssize_t __pyx_v_nClassU;
Py_ssize_t __pyx_v_nClassUwoN;
Py_ssize_t __pyx_v_rate_index;
Py_ssize_t __pyx_v_infective_index;
Py_ssize_t __pyx_v_product_index;
Py_ssize_t __pyx_v_reagent_index;
Py_ssize_t __pyx_v_S_index;
__Pyx_memviewslice __pyx_v_J = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_parameters = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_linear_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_infection_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_test_pos = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_test_freq = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_rate = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_term;
double __pyx_v_term2;
double __pyx_v_term3;
__Pyx_memviewslice __pyx_v_fi = { 0, 0, { 0 }, { 0 }, { 0 } };
Py_ssize_t __pyx_v_j;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("jacobian", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_7, 1);
__Pyx_XDECREF(__pyx_t_124);
__Pyx_XDECREF(__pyx_t_189);
__Pyx_XDECREF(__pyx_t_190);
__Pyx_XDECREF(__pyx_t_191);
__Pyx_AddTraceback("pyross.inference.SppQ.jacobian", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_J, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_parameters, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_linear_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_infection_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_test_pos, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_test_freq, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_fi, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3642: cdef:
+3643: Py_ssize_t i, m, n, M=self.M, dim=self.dim
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1; __pyx_t_1 = __pyx_v_self->__pyx_base.dim; __pyx_v_dim = __pyx_t_1;
+3644: Py_ssize_t nClass=self.nClass, nClassU=self.nClassU, nClassUwoN=self.nClassUwoN
__pyx_t_1 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_1; __pyx_t_1 = __pyx_v_self->nClassU; __pyx_v_nClassU = __pyx_t_1; __pyx_t_1 = __pyx_v_self->nClassUwoN; __pyx_v_nClassUwoN = __pyx_t_1;
+3645: Py_ssize_t rate_index, infective_index, product_index, reagent_index, S_index=self.class_index_dict['S']
if (unlikely(__pyx_v_self->__pyx_base.class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 3645, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_self->__pyx_base.class_index_dict, __pyx_n_u_S); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3645, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3645, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_S_index = __pyx_t_1;
+3646: double [:, :, :, :] J = self.J
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.J), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 3646, __pyx_L1_error) __pyx_v_J = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+3647: double [:, :] CM=self.CM
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3647, __pyx_L1_error) __pyx_v_CM = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+3648: double [:, :] parameters=self.parameters
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->parameters), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3648, __pyx_L1_error) __pyx_v_parameters = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+3649: int [:, :] linear_terms=self.linear_terms, infection_terms=self.infection_terms
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->linear_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3649, __pyx_L1_error) __pyx_v_linear_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->infection_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3649, __pyx_L1_error) __pyx_v_infection_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+3650: int [:] test_pos=self.test_pos
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_int(((PyObject *)__pyx_v_self->test_pos), PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 3650, __pyx_L1_error) __pyx_v_test_pos = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+3651: int [:] test_freq=self.test_freq
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_int(((PyObject *)__pyx_v_self->test_freq), PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 3651, __pyx_L1_error) __pyx_v_test_freq = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
3652: double [:] rate
3653: double term, term2, term3
+3654: double [:] fi=self.fi
__pyx_t_7 = __Pyx_PyObject_to_MemoryviewSlice_ds_double(((PyObject *)__pyx_v_self->__pyx_base.fi), PyBUF_WRITABLE); if (unlikely(!__pyx_t_7.memview)) __PYX_ERR(0, 3654, __pyx_L1_error) __pyx_v_fi = __pyx_t_7; __pyx_t_7.memview = NULL; __pyx_t_7.data = NULL;
3655:
3656: # infection terms (no infection terms in Q classes, perfect quarantine)
+3657: for i in range(infection_terms.shape[0]):
__pyx_t_1 = (__pyx_v_infection_terms.shape[0]);
__pyx_t_8 = __pyx_t_1;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_i = __pyx_t_9;
+3658: product_index = infection_terms[i, 2]
__pyx_t_10 = __pyx_v_i;
__pyx_t_11 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_10 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_11 * __pyx_v_infection_terms.strides[1]) )));
+3659: infective_index = infection_terms[i, 1]
__pyx_t_12 = __pyx_v_i;
__pyx_t_13 = 1;
__pyx_v_infective_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_12 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_13 * __pyx_v_infection_terms.strides[1]) )));
+3660: rate_index = infection_terms[i, 0]
__pyx_t_14 = __pyx_v_i;
__pyx_t_15 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_14 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_15 * __pyx_v_infection_terms.strides[1]) )));
+3661: rate = parameters[rate_index]
__pyx_t_7.data = __pyx_v_parameters.data;
__pyx_t_7.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 3661, __pyx_L1_error)
__pyx_t_7.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_7.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_7.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_7.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
+3662: for m in range(M):
__pyx_t_16 = __pyx_v_M;
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_m = __pyx_t_18;
+3663: J[S_index, m, S_index, m] -= rate[m]*l[i, m]
__pyx_t_19 = __pyx_v_m;
__pyx_t_20 = __pyx_v_i;
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_S_index;
__pyx_t_23 = __pyx_v_m;
__pyx_t_24 = __pyx_v_S_index;
__pyx_t_25 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_22 * __pyx_v_J.strides[0]) ) + __pyx_t_23 * __pyx_v_J.strides[1]) ) + __pyx_t_24 * __pyx_v_J.strides[2]) ) + __pyx_t_25 * __pyx_v_J.strides[3]) )) -= ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_19 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_20 * __pyx_v_l.strides[0]) ) + __pyx_t_21 * __pyx_v_l.strides[1]) ))));
+3664: if product_index>-1:
__pyx_t_26 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_26) {
/* … */
}
+3665: J[product_index, m, S_index, m] += rate[m]*l[i, m]
__pyx_t_27 = __pyx_v_m;
__pyx_t_28 = __pyx_v_i;
__pyx_t_29 = __pyx_v_m;
__pyx_t_30 = __pyx_v_product_index;
__pyx_t_31 = __pyx_v_m;
__pyx_t_32 = __pyx_v_S_index;
__pyx_t_33 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_30 * __pyx_v_J.strides[0]) ) + __pyx_t_31 * __pyx_v_J.strides[1]) ) + __pyx_t_32 * __pyx_v_J.strides[2]) ) + __pyx_t_33 * __pyx_v_J.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_27 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_28 * __pyx_v_l.strides[0]) ) + __pyx_t_29 * __pyx_v_l.strides[1]) ))));
+3666: for n in range(M):
__pyx_t_34 = __pyx_v_M;
__pyx_t_35 = __pyx_t_34;
for (__pyx_t_36 = 0; __pyx_t_36 < __pyx_t_35; __pyx_t_36+=1) {
__pyx_v_n = __pyx_t_36;
+3667: J[S_index, m, infective_index, n] -= x[S_index*M+m]*rate[m]*CM[m, n]/fi[n]
__pyx_t_37 = ((__pyx_v_S_index * __pyx_v_M) + __pyx_v_m);
__pyx_t_38 = __pyx_v_m;
__pyx_t_39 = __pyx_v_m;
__pyx_t_40 = __pyx_v_n;
__pyx_t_41 = __pyx_v_n;
__pyx_t_42 = __pyx_v_S_index;
__pyx_t_43 = __pyx_v_m;
__pyx_t_44 = __pyx_v_infective_index;
__pyx_t_45 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_42 * __pyx_v_J.strides[0]) ) + __pyx_t_43 * __pyx_v_J.strides[1]) ) + __pyx_t_44 * __pyx_v_J.strides[2]) ) + __pyx_t_45 * __pyx_v_J.strides[3]) )) -= ((((*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_37 * __pyx_v_x.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_38 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_39 * __pyx_v_CM.strides[0]) ) + __pyx_t_40 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_41 * __pyx_v_fi.strides[0]) ))));
+3668: if product_index>-1:
__pyx_t_26 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_26) {
/* … */
}
}
}
}
+3669: J[product_index, m, infective_index, n] += x[S_index*M+m]*rate[m]*CM[m, n]/fi[n]
__pyx_t_46 = ((__pyx_v_S_index * __pyx_v_M) + __pyx_v_m);
__pyx_t_47 = __pyx_v_m;
__pyx_t_48 = __pyx_v_m;
__pyx_t_49 = __pyx_v_n;
__pyx_t_50 = __pyx_v_n;
__pyx_t_51 = __pyx_v_product_index;
__pyx_t_52 = __pyx_v_m;
__pyx_t_53 = __pyx_v_infective_index;
__pyx_t_54 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_51 * __pyx_v_J.strides[0]) ) + __pyx_t_52 * __pyx_v_J.strides[1]) ) + __pyx_t_53 * __pyx_v_J.strides[2]) ) + __pyx_t_54 * __pyx_v_J.strides[3]) )) += ((((*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_46 * __pyx_v_x.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_47 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_CM.data + __pyx_t_48 * __pyx_v_CM.strides[0]) ) + __pyx_t_49 * __pyx_v_CM.strides[1]) )))) / (*((double *) ( /* dim=0 */ (__pyx_v_fi.data + __pyx_t_50 * __pyx_v_fi.strides[0]) ))));
3670: # linear terms
+3671: for i in range(linear_terms.shape[0]):
__pyx_t_1 = (__pyx_v_linear_terms.shape[0]);
__pyx_t_8 = __pyx_t_1;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_i = __pyx_t_9;
+3672: product_index = linear_terms[i, 2]
__pyx_t_55 = __pyx_v_i;
__pyx_t_56 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_55 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_56 * __pyx_v_linear_terms.strides[1]) )));
+3673: reagent_index = linear_terms[i, 1]
__pyx_t_57 = __pyx_v_i;
__pyx_t_58 = 1;
__pyx_v_reagent_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_57 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_58 * __pyx_v_linear_terms.strides[1]) )));
+3674: rate_index = linear_terms[i, 0]
__pyx_t_59 = __pyx_v_i;
__pyx_t_60 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_59 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_60 * __pyx_v_linear_terms.strides[1]) )));
+3675: rate = parameters[rate_index]
__pyx_t_7.data = __pyx_v_parameters.data;
__pyx_t_7.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_7, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 3675, __pyx_L1_error)
__pyx_t_7.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_7.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_7.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_7.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_7;
__pyx_t_7.memview = NULL;
__pyx_t_7.data = NULL;
+3676: for m in range(M):
__pyx_t_16 = __pyx_v_M;
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_m = __pyx_t_18;
+3677: J[reagent_index, m, reagent_index, m] -= rate[m]
__pyx_t_61 = __pyx_v_m;
__pyx_t_62 = __pyx_v_reagent_index;
__pyx_t_63 = __pyx_v_m;
__pyx_t_64 = __pyx_v_reagent_index;
__pyx_t_65 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_62 * __pyx_v_J.strides[0]) ) + __pyx_t_63 * __pyx_v_J.strides[1]) ) + __pyx_t_64 * __pyx_v_J.strides[2]) ) + __pyx_t_65 * __pyx_v_J.strides[3]) )) -= (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_61 * __pyx_v_rate.strides[0]) )));
+3678: J[reagent_index + nClassU, m, reagent_index + nClassU, m] -= rate[m]
__pyx_t_66 = __pyx_v_m;
__pyx_t_67 = (__pyx_v_reagent_index + __pyx_v_nClassU);
__pyx_t_68 = __pyx_v_m;
__pyx_t_69 = (__pyx_v_reagent_index + __pyx_v_nClassU);
__pyx_t_70 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_67 * __pyx_v_J.strides[0]) ) + __pyx_t_68 * __pyx_v_J.strides[1]) ) + __pyx_t_69 * __pyx_v_J.strides[2]) ) + __pyx_t_70 * __pyx_v_J.strides[3]) )) -= (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_66 * __pyx_v_rate.strides[0]) )));
+3679: if product_index>-1:
__pyx_t_26 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_26) {
/* … */
}
}
}
+3680: J[product_index, m, reagent_index, m] += rate[m]
__pyx_t_71 = __pyx_v_m;
__pyx_t_72 = __pyx_v_product_index;
__pyx_t_73 = __pyx_v_m;
__pyx_t_74 = __pyx_v_reagent_index;
__pyx_t_75 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_72 * __pyx_v_J.strides[0]) ) + __pyx_t_73 * __pyx_v_J.strides[1]) ) + __pyx_t_74 * __pyx_v_J.strides[2]) ) + __pyx_t_75 * __pyx_v_J.strides[3]) )) += (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_71 * __pyx_v_rate.strides[0]) )));
+3681: J[product_index + nClassU, m, reagent_index + nClassU, m] += rate[m]
__pyx_t_76 = __pyx_v_m;
__pyx_t_77 = (__pyx_v_product_index + __pyx_v_nClassU);
__pyx_t_78 = __pyx_v_m;
__pyx_t_79 = (__pyx_v_reagent_index + __pyx_v_nClassU);
__pyx_t_80 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_77 * __pyx_v_J.strides[0]) ) + __pyx_t_78 * __pyx_v_J.strides[1]) ) + __pyx_t_79 * __pyx_v_J.strides[2]) ) + __pyx_t_80 * __pyx_v_J.strides[3]) )) += (*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_76 * __pyx_v_rate.strides[0]) )));
3682: # quarantining terms
+3683: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_8 = __pyx_t_1;
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
__pyx_v_m = __pyx_t_9;
+3684: for i in range(nClassUwoN):
__pyx_t_16 = __pyx_v_nClassUwoN;
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_i = __pyx_t_18;
+3685: term = tau0 * parameters[test_freq[i], m] * parameters[test_pos[i], m]
__pyx_t_81 = __pyx_v_i;
__pyx_t_82 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_81 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_83 = __pyx_v_m;
__pyx_t_84 = __pyx_v_i;
__pyx_t_85 = (*((int *) ( /* dim=0 */ (__pyx_v_test_pos.data + __pyx_t_84 * __pyx_v_test_pos.strides[0]) )));
__pyx_t_86 = __pyx_v_m;
__pyx_v_term = ((__pyx_v_tau0 * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_82 * __pyx_v_parameters.strides[0]) ) + __pyx_t_83 * __pyx_v_parameters.strides[1]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_85 * __pyx_v_parameters.strides[0]) ) + __pyx_t_86 * __pyx_v_parameters.strides[1]) ))));
+3686: term2 = term * x[i*M+m] / ntestpop
__pyx_t_87 = ((__pyx_v_i * __pyx_v_M) + __pyx_v_m);
__pyx_v_term2 = ((__pyx_v_term * (*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_87 * __pyx_v_x.strides[0]) )))) / __pyx_v_ntestpop);
+3687: J[i, m, i, m] -= term
__pyx_t_88 = __pyx_v_i;
__pyx_t_89 = __pyx_v_m;
__pyx_t_90 = __pyx_v_i;
__pyx_t_91 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_88 * __pyx_v_J.strides[0]) ) + __pyx_t_89 * __pyx_v_J.strides[1]) ) + __pyx_t_90 * __pyx_v_J.strides[2]) ) + __pyx_t_91 * __pyx_v_J.strides[3]) )) -= __pyx_v_term;
+3688: J[i+nClassU, m, i, m] += term
__pyx_t_92 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_93 = __pyx_v_m;
__pyx_t_94 = __pyx_v_i;
__pyx_t_95 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_92 * __pyx_v_J.strides[0]) ) + __pyx_t_93 * __pyx_v_J.strides[1]) ) + __pyx_t_94 * __pyx_v_J.strides[2]) ) + __pyx_t_95 * __pyx_v_J.strides[3]) )) += __pyx_v_term;
+3689: J[nClass-1, m, i, m] += term
__pyx_t_96 = (__pyx_v_nClass - 1);
__pyx_t_97 = __pyx_v_m;
__pyx_t_98 = __pyx_v_i;
__pyx_t_99 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_96 * __pyx_v_J.strides[0]) ) + __pyx_t_97 * __pyx_v_J.strides[1]) ) + __pyx_t_98 * __pyx_v_J.strides[2]) ) + __pyx_t_99 * __pyx_v_J.strides[3]) )) += __pyx_v_term;
+3690: for n in range(M):
__pyx_t_34 = __pyx_v_M;
__pyx_t_35 = __pyx_t_34;
for (__pyx_t_36 = 0; __pyx_t_36 < __pyx_t_35; __pyx_t_36+=1) {
__pyx_v_n = __pyx_t_36;
+3691: for j in range(nClassUwoN):
__pyx_t_100 = __pyx_v_nClassUwoN;
__pyx_t_101 = __pyx_t_100;
for (__pyx_t_102 = 0; __pyx_t_102 < __pyx_t_101; __pyx_t_102+=1) {
__pyx_v_j = __pyx_t_102;
+3692: term3 = term2 * (parameters[test_freq[j],n] - parameters[test_freq[nClassUwoN],n])
__pyx_t_103 = __pyx_v_j;
__pyx_t_104 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_103 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_105 = __pyx_v_n;
__pyx_t_106 = __pyx_v_nClassUwoN;
__pyx_t_107 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_106 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_108 = __pyx_v_n;
__pyx_v_term3 = (__pyx_v_term2 * ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_104 * __pyx_v_parameters.strides[0]) ) + __pyx_t_105 * __pyx_v_parameters.strides[1]) ))) - (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_107 * __pyx_v_parameters.strides[0]) ) + __pyx_t_108 * __pyx_v_parameters.strides[1]) )))));
+3693: J[i, m, j, n] += term3
__pyx_t_109 = __pyx_v_i;
__pyx_t_110 = __pyx_v_m;
__pyx_t_111 = __pyx_v_j;
__pyx_t_112 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_109 * __pyx_v_J.strides[0]) ) + __pyx_t_110 * __pyx_v_J.strides[1]) ) + __pyx_t_111 * __pyx_v_J.strides[2]) ) + __pyx_t_112 * __pyx_v_J.strides[3]) )) += __pyx_v_term3;
+3694: J[i+nClassU, m, j, n] -= term3
__pyx_t_113 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_114 = __pyx_v_m;
__pyx_t_115 = __pyx_v_j;
__pyx_t_116 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_113 * __pyx_v_J.strides[0]) ) + __pyx_t_114 * __pyx_v_J.strides[1]) ) + __pyx_t_115 * __pyx_v_J.strides[2]) ) + __pyx_t_116 * __pyx_v_J.strides[3]) )) -= __pyx_v_term3;
+3695: J[nClass-1, m, j, n] -= term3
__pyx_t_117 = (__pyx_v_nClass - 1);
__pyx_t_118 = __pyx_v_m;
__pyx_t_119 = __pyx_v_j;
__pyx_t_120 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_117 * __pyx_v_J.strides[0]) ) + __pyx_t_118 * __pyx_v_J.strides[1]) ) + __pyx_t_119 * __pyx_v_J.strides[2]) ) + __pyx_t_120 * __pyx_v_J.strides[3]) )) -= __pyx_v_term3;
}
+3696: term3 = term2 * parameters[test_freq[nClassUwoN],n]
__pyx_t_121 = __pyx_v_nClassUwoN;
__pyx_t_122 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_121 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_123 = __pyx_v_n;
__pyx_v_term3 = (__pyx_v_term2 * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_122 * __pyx_v_parameters.strides[0]) ) + __pyx_t_123 * __pyx_v_parameters.strides[1]) ))));
+3697: if self.constant_terms.size > 0:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3697, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_124 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_124); if (unlikely(!__pyx_t_124)) __PYX_ERR(0, 3697, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_26 = __Pyx_PyObject_IsTrue(__pyx_t_124); if (unlikely(__pyx_t_26 < 0)) __PYX_ERR(0, 3697, __pyx_L1_error) __Pyx_DECREF(__pyx_t_124); __pyx_t_124 = 0; if (__pyx_t_26) { /* … */ }
+3698: J[i, m, nClassUwoN, n] += term3
__pyx_t_125 = __pyx_v_i;
__pyx_t_126 = __pyx_v_m;
__pyx_t_127 = __pyx_v_nClassUwoN;
__pyx_t_128 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_125 * __pyx_v_J.strides[0]) ) + __pyx_t_126 * __pyx_v_J.strides[1]) ) + __pyx_t_127 * __pyx_v_J.strides[2]) ) + __pyx_t_128 * __pyx_v_J.strides[3]) )) += __pyx_v_term3;
+3699: J[i+nClassU, m, nClassUwoN, n] -= term3
__pyx_t_129 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_130 = __pyx_v_m;
__pyx_t_131 = __pyx_v_nClassUwoN;
__pyx_t_132 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_129 * __pyx_v_J.strides[0]) ) + __pyx_t_130 * __pyx_v_J.strides[1]) ) + __pyx_t_131 * __pyx_v_J.strides[2]) ) + __pyx_t_132 * __pyx_v_J.strides[3]) )) -= __pyx_v_term3;
+3700: J[nClass-1, m, nClassUwoN, n] -= term3
__pyx_t_133 = (__pyx_v_nClass - 1);
__pyx_t_134 = __pyx_v_m;
__pyx_t_135 = __pyx_v_nClassUwoN;
__pyx_t_136 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_133 * __pyx_v_J.strides[0]) ) + __pyx_t_134 * __pyx_v_J.strides[1]) ) + __pyx_t_135 * __pyx_v_J.strides[2]) ) + __pyx_t_136 * __pyx_v_J.strides[3]) )) -= __pyx_v_term3;
+3701: J[i, m, nClass-1, n] -= term3
__pyx_t_137 = __pyx_v_i;
__pyx_t_138 = __pyx_v_m;
__pyx_t_139 = (__pyx_v_nClass - 1);
__pyx_t_140 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_137 * __pyx_v_J.strides[0]) ) + __pyx_t_138 * __pyx_v_J.strides[1]) ) + __pyx_t_139 * __pyx_v_J.strides[2]) ) + __pyx_t_140 * __pyx_v_J.strides[3]) )) -= __pyx_v_term3;
+3702: J[i+nClassU, m, nClass-1, n] += term3
__pyx_t_141 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_142 = __pyx_v_m;
__pyx_t_143 = (__pyx_v_nClass - 1);
__pyx_t_144 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_141 * __pyx_v_J.strides[0]) ) + __pyx_t_142 * __pyx_v_J.strides[1]) ) + __pyx_t_143 * __pyx_v_J.strides[2]) ) + __pyx_t_144 * __pyx_v_J.strides[3]) )) += __pyx_v_term3;
+3703: J[nClass-1, m, nClass-1, n] += term3
__pyx_t_145 = (__pyx_v_nClass - 1);
__pyx_t_146 = __pyx_v_m;
__pyx_t_147 = (__pyx_v_nClass - 1);
__pyx_t_148 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_145 * __pyx_v_J.strides[0]) ) + __pyx_t_146 * __pyx_v_J.strides[1]) ) + __pyx_t_147 * __pyx_v_J.strides[2]) ) + __pyx_t_148 * __pyx_v_J.strides[3]) )) += __pyx_v_term3;
}
}
+3704: term = tau0 * parameters[test_freq[nClassUwoN], m] * parameters[test_pos[nClassUwoN], m]
__pyx_t_149 = __pyx_v_nClassUwoN;
__pyx_t_150 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_149 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_151 = __pyx_v_m;
__pyx_t_152 = __pyx_v_nClassUwoN;
__pyx_t_153 = (*((int *) ( /* dim=0 */ (__pyx_v_test_pos.data + __pyx_t_152 * __pyx_v_test_pos.strides[0]) )));
__pyx_t_154 = __pyx_v_m;
__pyx_v_term = ((__pyx_v_tau0 * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_150 * __pyx_v_parameters.strides[0]) ) + __pyx_t_151 * __pyx_v_parameters.strides[1]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_153 * __pyx_v_parameters.strides[0]) ) + __pyx_t_154 * __pyx_v_parameters.strides[1]) ))));
+3705: term2 = term * r[m] / ntestpop
__pyx_t_155 = __pyx_v_m;
__pyx_v_term2 = ((__pyx_v_term * (*((double *) ( /* dim=0 */ (__pyx_v_r.data + __pyx_t_155 * __pyx_v_r.strides[0]) )))) / __pyx_v_ntestpop);
+3706: for j in range(nClassUwoN):
__pyx_t_16 = __pyx_v_nClassUwoN;
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_j = __pyx_t_18;
+3707: J[nClass-1, m, j, m] -= term
__pyx_t_156 = (__pyx_v_nClass - 1);
__pyx_t_157 = __pyx_v_m;
__pyx_t_158 = __pyx_v_j;
__pyx_t_159 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_156 * __pyx_v_J.strides[0]) ) + __pyx_t_157 * __pyx_v_J.strides[1]) ) + __pyx_t_158 * __pyx_v_J.strides[2]) ) + __pyx_t_159 * __pyx_v_J.strides[3]) )) -= __pyx_v_term;
}
+3708: if self.constant_terms.size > 0:
__pyx_t_124 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_124)) __PYX_ERR(0, 3708, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_124); __pyx_t_2 = PyObject_RichCompare(__pyx_t_124, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3708, __pyx_L1_error) __Pyx_DECREF(__pyx_t_124); __pyx_t_124 = 0; __pyx_t_26 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_26 < 0)) __PYX_ERR(0, 3708, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (__pyx_t_26) { /* … */ }
+3709: J[nClass-1, m, nClassUwoN, m] += term
__pyx_t_160 = (__pyx_v_nClass - 1);
__pyx_t_161 = __pyx_v_m;
__pyx_t_162 = __pyx_v_nClassUwoN;
__pyx_t_163 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_160 * __pyx_v_J.strides[0]) ) + __pyx_t_161 * __pyx_v_J.strides[1]) ) + __pyx_t_162 * __pyx_v_J.strides[2]) ) + __pyx_t_163 * __pyx_v_J.strides[3]) )) += __pyx_v_term;
+3710: J[nClass-1, m, nClass-1, m] -= term
__pyx_t_164 = (__pyx_v_nClass - 1);
__pyx_t_165 = __pyx_v_m;
__pyx_t_166 = (__pyx_v_nClass - 1);
__pyx_t_167 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_164 * __pyx_v_J.strides[0]) ) + __pyx_t_165 * __pyx_v_J.strides[1]) ) + __pyx_t_166 * __pyx_v_J.strides[2]) ) + __pyx_t_167 * __pyx_v_J.strides[3]) )) -= __pyx_v_term;
+3711: for n in range(M):
__pyx_t_16 = __pyx_v_M;
__pyx_t_17 = __pyx_t_16;
for (__pyx_t_18 = 0; __pyx_t_18 < __pyx_t_17; __pyx_t_18+=1) {
__pyx_v_n = __pyx_t_18;
+3712: for j in range(nClassUwoN):
__pyx_t_34 = __pyx_v_nClassUwoN;
__pyx_t_35 = __pyx_t_34;
for (__pyx_t_36 = 0; __pyx_t_36 < __pyx_t_35; __pyx_t_36+=1) {
__pyx_v_j = __pyx_t_36;
+3713: term3 = term2 * (parameters[test_freq[j],n] - parameters[test_freq[nClassUwoN],n])
__pyx_t_168 = __pyx_v_j;
__pyx_t_169 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_168 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_170 = __pyx_v_n;
__pyx_t_171 = __pyx_v_nClassUwoN;
__pyx_t_172 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_171 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_173 = __pyx_v_n;
__pyx_v_term3 = (__pyx_v_term2 * ((*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_169 * __pyx_v_parameters.strides[0]) ) + __pyx_t_170 * __pyx_v_parameters.strides[1]) ))) - (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_172 * __pyx_v_parameters.strides[0]) ) + __pyx_t_173 * __pyx_v_parameters.strides[1]) )))));
+3714: J[nClass-1, m, j, n] -= term3
__pyx_t_174 = (__pyx_v_nClass - 1);
__pyx_t_175 = __pyx_v_m;
__pyx_t_176 = __pyx_v_j;
__pyx_t_177 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_174 * __pyx_v_J.strides[0]) ) + __pyx_t_175 * __pyx_v_J.strides[1]) ) + __pyx_t_176 * __pyx_v_J.strides[2]) ) + __pyx_t_177 * __pyx_v_J.strides[3]) )) -= __pyx_v_term3;
}
+3715: term3 = term2 * parameters[test_freq[nClassUwoN],n]
__pyx_t_178 = __pyx_v_nClassUwoN;
__pyx_t_179 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_178 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_180 = __pyx_v_n;
__pyx_v_term3 = (__pyx_v_term2 * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_179 * __pyx_v_parameters.strides[0]) ) + __pyx_t_180 * __pyx_v_parameters.strides[1]) ))));
+3716: if self.constant_terms.size > 0:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_124 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_124); if (unlikely(!__pyx_t_124)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_26 = __Pyx_PyObject_IsTrue(__pyx_t_124); if (unlikely(__pyx_t_26 < 0)) __PYX_ERR(0, 3716, __pyx_L1_error) __Pyx_DECREF(__pyx_t_124); __pyx_t_124 = 0; if (__pyx_t_26) { /* … */ }
+3717: J[nClass-1, m, nClassUwoN, n] -= term3
__pyx_t_181 = (__pyx_v_nClass - 1);
__pyx_t_182 = __pyx_v_m;
__pyx_t_183 = __pyx_v_nClassUwoN;
__pyx_t_184 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_181 * __pyx_v_J.strides[0]) ) + __pyx_t_182 * __pyx_v_J.strides[1]) ) + __pyx_t_183 * __pyx_v_J.strides[2]) ) + __pyx_t_184 * __pyx_v_J.strides[3]) )) -= __pyx_v_term3;
+3718: J[nClass-1, m, nClass-1, n] += term3
__pyx_t_185 = (__pyx_v_nClass - 1);
__pyx_t_186 = __pyx_v_m;
__pyx_t_187 = (__pyx_v_nClass - 1);
__pyx_t_188 = __pyx_v_n;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_J.data + __pyx_t_185 * __pyx_v_J.strides[0]) ) + __pyx_t_186 * __pyx_v_J.strides[1]) ) + __pyx_t_187 * __pyx_v_J.strides[2]) ) + __pyx_t_188 * __pyx_v_J.strides[3]) )) += __pyx_v_term3;
}
}
3719:
3720:
3721:
+3722: self.J_mat = self.J.reshape((dim, dim))
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.J), __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_189 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_189)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_189); __pyx_t_190 = PyInt_FromSsize_t(__pyx_v_dim); if (unlikely(!__pyx_t_190)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_190); __pyx_t_191 = PyTuple_New(2); if (unlikely(!__pyx_t_191)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_191); __Pyx_GIVEREF(__pyx_t_189); PyTuple_SET_ITEM(__pyx_t_191, 0, __pyx_t_189); __Pyx_GIVEREF(__pyx_t_190); PyTuple_SET_ITEM(__pyx_t_191, 1, __pyx_t_190); __pyx_t_189 = 0; __pyx_t_190 = 0; __pyx_t_190 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_190 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_190)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_190); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_124 = (__pyx_t_190) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_190, __pyx_t_191) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_191); __Pyx_XDECREF(__pyx_t_190); __pyx_t_190 = 0; __Pyx_DECREF(__pyx_t_191); __pyx_t_191 = 0; if (unlikely(!__pyx_t_124)) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_124); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_124) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_124, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3722, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_124); __Pyx_GOTREF(__pyx_v_self->__pyx_base.J_mat); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.J_mat)); __pyx_v_self->__pyx_base.J_mat = ((PyArrayObject *)__pyx_t_124); __pyx_t_124 = 0;
3723:
+3724: cdef noise_correlation(self, double [:] x, double [:, :] l, double [:] r, double tau0):
static PyObject *__pyx_f_6pyross_9inference_4SppQ_noise_correlation(struct __pyx_obj_6pyross_9inference_SppQ *__pyx_v_self, __Pyx_memviewslice __pyx_v_x, __Pyx_memviewslice __pyx_v_l, __Pyx_memviewslice __pyx_v_r, double __pyx_v_tau0) {
Py_ssize_t __pyx_v_i;
Py_ssize_t __pyx_v_m;
Py_ssize_t __pyx_v_M;
Py_ssize_t __pyx_v_class_index;
Py_ssize_t __pyx_v_nClass;
Py_ssize_t __pyx_v_nClassU;
Py_ssize_t __pyx_v_nClassUwoN;
Py_ssize_t __pyx_v_rate_index;
CYTHON_UNUSED Py_ssize_t __pyx_v_infective_index;
Py_ssize_t __pyx_v_product_index;
Py_ssize_t __pyx_v_reagent_index;
Py_ssize_t __pyx_v_S_index;
__Pyx_memviewslice __pyx_v_B = { 0, 0, { 0 }, { 0 }, { 0 } };
CYTHON_UNUSED __Pyx_memviewslice __pyx_v_CM = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_parameters = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_constant_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_linear_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_infection_terms = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_test_pos = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_test_freq = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_s = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_reagent = { 0, 0, { 0 }, { 0 }, { 0 } };
__Pyx_memviewslice __pyx_v_rate = { 0, 0, { 0 }, { 0 }, { 0 } };
double __pyx_v_term;
double __pyx_v_N;
PyObject *__pyx_r = NULL;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("noise_correlation", 0);
/* … */
/* function exit code */
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_2);
__PYX_XDEC_MEMVIEW(&__pyx_t_3, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_4, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_5, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_6, 1);
__PYX_XDEC_MEMVIEW(&__pyx_t_8, 1);
__Pyx_XDECREF(__pyx_t_10);
__Pyx_XDECREF(__pyx_t_177);
__Pyx_XDECREF(__pyx_t_178);
__Pyx_XDECREF(__pyx_t_179);
__Pyx_AddTraceback("pyross.inference.SppQ.noise_correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = 0;
__pyx_L0:;
__PYX_XDEC_MEMVIEW(&__pyx_v_B, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_CM, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_parameters, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_constant_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_linear_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_infection_terms, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_test_pos, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_test_freq, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_s, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_reagent, 1);
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__Pyx_XGIVEREF(__pyx_r);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
3725: cdef:
+3726: Py_ssize_t i, m, n, M=self.M, class_index
__pyx_t_1 = __pyx_v_self->__pyx_base.M; __pyx_v_M = __pyx_t_1;
+3727: Py_ssize_t nClass=self.nClass, nClassU=self.nClassU, nClassUwoN=self.nClassUwoN
__pyx_t_1 = __pyx_v_self->__pyx_base.nClass; __pyx_v_nClass = __pyx_t_1; __pyx_t_1 = __pyx_v_self->nClassU; __pyx_v_nClassU = __pyx_t_1; __pyx_t_1 = __pyx_v_self->nClassUwoN; __pyx_v_nClassUwoN = __pyx_t_1;
+3728: Py_ssize_t rate_index, infective_index, product_index, reagent_index, S_index=self.class_index_dict['S']
if (unlikely(__pyx_v_self->__pyx_base.class_index_dict == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
__PYX_ERR(0, 3728, __pyx_L1_error)
}
__pyx_t_2 = __Pyx_PyDict_GetItem(__pyx_v_self->__pyx_base.class_index_dict, __pyx_n_u_S); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3728, __pyx_L1_error)
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_1 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 3728, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_v_S_index = __pyx_t_1;
+3729: double [:, :, :, :] B=self.B
__pyx_t_3 = __Pyx_PyObject_to_MemoryviewSlice_dsdsdsds_double(((PyObject *)__pyx_v_self->__pyx_base.B), PyBUF_WRITABLE); if (unlikely(!__pyx_t_3.memview)) __PYX_ERR(0, 3729, __pyx_L1_error) __pyx_v_B = __pyx_t_3; __pyx_t_3.memview = NULL; __pyx_t_3.data = NULL;
+3730: double [:, :] CM=self.CM
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->__pyx_base.CM), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3730, __pyx_L1_error) __pyx_v_CM = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+3731: double [:, :] parameters=self.parameters
__pyx_t_4 = __Pyx_PyObject_to_MemoryviewSlice_dsds_double(((PyObject *)__pyx_v_self->parameters), PyBUF_WRITABLE); if (unlikely(!__pyx_t_4.memview)) __PYX_ERR(0, 3731, __pyx_L1_error) __pyx_v_parameters = __pyx_t_4; __pyx_t_4.memview = NULL; __pyx_t_4.data = NULL;
+3732: int [:, :] constant_terms=self.constant_terms
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->constant_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3732, __pyx_L1_error) __pyx_v_constant_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+3733: int [:, :] linear_terms=self.linear_terms, infection_terms=self.infection_terms
__pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->linear_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3733, __pyx_L1_error) __pyx_v_linear_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL; __pyx_t_5 = __Pyx_PyObject_to_MemoryviewSlice_dsds_int(((PyObject *)__pyx_v_self->infection_terms), PyBUF_WRITABLE); if (unlikely(!__pyx_t_5.memview)) __PYX_ERR(0, 3733, __pyx_L1_error) __pyx_v_infection_terms = __pyx_t_5; __pyx_t_5.memview = NULL; __pyx_t_5.data = NULL;
+3734: int [:] test_pos=self.test_pos
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_int(((PyObject *)__pyx_v_self->test_pos), PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 3734, __pyx_L1_error) __pyx_v_test_pos = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
+3735: int [:] test_freq=self.test_freq
__pyx_t_6 = __Pyx_PyObject_to_MemoryviewSlice_ds_int(((PyObject *)__pyx_v_self->test_freq), PyBUF_WRITABLE); if (unlikely(!__pyx_t_6.memview)) __PYX_ERR(0, 3735, __pyx_L1_error) __pyx_v_test_freq = __pyx_t_6; __pyx_t_6.memview = NULL; __pyx_t_6.data = NULL;
3736: double [:] s, reagent, rate
3737: double term
+3738: double N=self.N
__pyx_t_7 = __pyx_v_self->__pyx_base.N; __pyx_v_N = __pyx_t_7;
+3739: s = x[S_index*M:(S_index+1)*M]
__pyx_t_8.data = __pyx_v_x.data;
__pyx_t_8.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
__pyx_t_9 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_8,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_9,
(__pyx_v_S_index * __pyx_v_M),
((__pyx_v_S_index + 1) * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 3739, __pyx_L1_error)
}
__pyx_v_s = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
3740:
+3741: if self.constant_terms.size > 0:
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->constant_terms), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_10 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 3741, __pyx_L1_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; if (__pyx_t_11) { /* … */ }
+3742: for i in range(constant_terms.shape[0]):
__pyx_t_1 = (__pyx_v_constant_terms.shape[0]);
__pyx_t_12 = __pyx_t_1;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_i = __pyx_t_13;
+3743: rate_index = constant_terms[i, 0]
__pyx_t_14 = __pyx_v_i;
__pyx_t_15 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_constant_terms.data + __pyx_t_14 * __pyx_v_constant_terms.strides[0]) ) + __pyx_t_15 * __pyx_v_constant_terms.strides[1]) )));
+3744: class_index = constant_terms[i, 1]
__pyx_t_16 = __pyx_v_i;
__pyx_t_17 = 1;
__pyx_v_class_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_constant_terms.data + __pyx_t_16 * __pyx_v_constant_terms.strides[0]) ) + __pyx_t_17 * __pyx_v_constant_terms.strides[1]) )));
+3745: rate = parameters[rate_index]
__pyx_t_8.data = __pyx_v_parameters.data;
__pyx_t_8.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 3745, __pyx_L1_error)
__pyx_t_8.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_8.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_8.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_8.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+3746: for m in range(M):
__pyx_t_18 = __pyx_v_M;
__pyx_t_19 = __pyx_t_18;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_m = __pyx_t_20;
+3747: B[class_index, m, class_index, m] += rate[m]/N
__pyx_t_21 = __pyx_v_m;
__pyx_t_22 = __pyx_v_class_index;
__pyx_t_23 = __pyx_v_m;
__pyx_t_24 = __pyx_v_class_index;
__pyx_t_25 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_22 * __pyx_v_B.strides[0]) ) + __pyx_t_23 * __pyx_v_B.strides[1]) ) + __pyx_t_24 * __pyx_v_B.strides[2]) ) + __pyx_t_25 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_21 * __pyx_v_rate.strides[0]) ))) / __pyx_v_N);
+3748: B[nClass-1, m, nClass-1, m] += rate[m]/N
__pyx_t_26 = __pyx_v_m;
__pyx_t_27 = (__pyx_v_nClass - 1);
__pyx_t_28 = __pyx_v_m;
__pyx_t_29 = (__pyx_v_nClass - 1);
__pyx_t_30 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_27 * __pyx_v_B.strides[0]) ) + __pyx_t_28 * __pyx_v_B.strides[1]) ) + __pyx_t_29 * __pyx_v_B.strides[2]) ) + __pyx_t_30 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_26 * __pyx_v_rate.strides[0]) ))) / __pyx_v_N);
}
}
3749:
+3750: for i in range(infection_terms.shape[0]):
__pyx_t_1 = (__pyx_v_infection_terms.shape[0]);
__pyx_t_12 = __pyx_t_1;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_i = __pyx_t_13;
+3751: product_index = infection_terms[i, 2]
__pyx_t_31 = __pyx_v_i;
__pyx_t_32 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_31 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_32 * __pyx_v_infection_terms.strides[1]) )));
+3752: infective_index = infection_terms[i, 1]
__pyx_t_33 = __pyx_v_i;
__pyx_t_34 = 1;
__pyx_v_infective_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_33 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_34 * __pyx_v_infection_terms.strides[1]) )));
+3753: rate_index = infection_terms[i, 0]
__pyx_t_35 = __pyx_v_i;
__pyx_t_36 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_infection_terms.data + __pyx_t_35 * __pyx_v_infection_terms.strides[0]) ) + __pyx_t_36 * __pyx_v_infection_terms.strides[1]) )));
+3754: rate = parameters[rate_index]
__pyx_t_8.data = __pyx_v_parameters.data;
__pyx_t_8.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 3754, __pyx_L1_error)
__pyx_t_8.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_8.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_8.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_8.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+3755: for m in range(M):
__pyx_t_18 = __pyx_v_M;
__pyx_t_19 = __pyx_t_18;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_m = __pyx_t_20;
+3756: B[S_index, m, S_index, m] += rate[m]*l[i, m]*s[m]
__pyx_t_37 = __pyx_v_m;
__pyx_t_38 = __pyx_v_i;
__pyx_t_39 = __pyx_v_m;
__pyx_t_40 = __pyx_v_m;
__pyx_t_41 = __pyx_v_S_index;
__pyx_t_42 = __pyx_v_m;
__pyx_t_43 = __pyx_v_S_index;
__pyx_t_44 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_41 * __pyx_v_B.strides[0]) ) + __pyx_t_42 * __pyx_v_B.strides[1]) ) + __pyx_t_43 * __pyx_v_B.strides[2]) ) + __pyx_t_44 * __pyx_v_B.strides[3]) )) += (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_37 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_38 * __pyx_v_l.strides[0]) ) + __pyx_t_39 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_40 * __pyx_v_s.strides[0]) ))));
+3757: if product_index>-1:
__pyx_t_11 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_11) {
/* … */
}
}
}
+3758: B[S_index, m, product_index, m] -= rate[m]*l[i, m]*s[m]
__pyx_t_45 = __pyx_v_m;
__pyx_t_46 = __pyx_v_i;
__pyx_t_47 = __pyx_v_m;
__pyx_t_48 = __pyx_v_m;
__pyx_t_49 = __pyx_v_S_index;
__pyx_t_50 = __pyx_v_m;
__pyx_t_51 = __pyx_v_product_index;
__pyx_t_52 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_49 * __pyx_v_B.strides[0]) ) + __pyx_t_50 * __pyx_v_B.strides[1]) ) + __pyx_t_51 * __pyx_v_B.strides[2]) ) + __pyx_t_52 * __pyx_v_B.strides[3]) )) -= (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_45 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_46 * __pyx_v_l.strides[0]) ) + __pyx_t_47 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_48 * __pyx_v_s.strides[0]) ))));
+3759: B[product_index, m, product_index, m] += rate[m]*l[i, m]*s[m]
__pyx_t_53 = __pyx_v_m;
__pyx_t_54 = __pyx_v_i;
__pyx_t_55 = __pyx_v_m;
__pyx_t_56 = __pyx_v_m;
__pyx_t_57 = __pyx_v_product_index;
__pyx_t_58 = __pyx_v_m;
__pyx_t_59 = __pyx_v_product_index;
__pyx_t_60 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_57 * __pyx_v_B.strides[0]) ) + __pyx_t_58 * __pyx_v_B.strides[1]) ) + __pyx_t_59 * __pyx_v_B.strides[2]) ) + __pyx_t_60 * __pyx_v_B.strides[3]) )) += (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_53 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_54 * __pyx_v_l.strides[0]) ) + __pyx_t_55 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_56 * __pyx_v_s.strides[0]) ))));
+3760: B[product_index, m, S_index, m] -= rate[m]*l[i, m]*s[m]
__pyx_t_61 = __pyx_v_m;
__pyx_t_62 = __pyx_v_i;
__pyx_t_63 = __pyx_v_m;
__pyx_t_64 = __pyx_v_m;
__pyx_t_65 = __pyx_v_product_index;
__pyx_t_66 = __pyx_v_m;
__pyx_t_67 = __pyx_v_S_index;
__pyx_t_68 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_65 * __pyx_v_B.strides[0]) ) + __pyx_t_66 * __pyx_v_B.strides[1]) ) + __pyx_t_67 * __pyx_v_B.strides[2]) ) + __pyx_t_68 * __pyx_v_B.strides[3]) )) -= (((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_61 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_l.data + __pyx_t_62 * __pyx_v_l.strides[0]) ) + __pyx_t_63 * __pyx_v_l.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_s.data + __pyx_t_64 * __pyx_v_s.strides[0]) ))));
3761:
+3762: for i in range(linear_terms.shape[0]):
__pyx_t_1 = (__pyx_v_linear_terms.shape[0]);
__pyx_t_12 = __pyx_t_1;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_i = __pyx_t_13;
+3763: product_index = linear_terms[i, 2]
__pyx_t_69 = __pyx_v_i;
__pyx_t_70 = 2;
__pyx_v_product_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_69 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_70 * __pyx_v_linear_terms.strides[1]) )));
+3764: reagent_index = linear_terms[i, 1]
__pyx_t_71 = __pyx_v_i;
__pyx_t_72 = 1;
__pyx_v_reagent_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_71 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_72 * __pyx_v_linear_terms.strides[1]) )));
+3765: reagent = x[reagent_index*M:(reagent_index+1)*M]
__pyx_t_8.data = __pyx_v_x.data;
__pyx_t_8.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
__pyx_t_9 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_8,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_9,
(__pyx_v_reagent_index * __pyx_v_M),
((__pyx_v_reagent_index + 1) * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 3765, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_reagent, 1);
__pyx_v_reagent = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+3766: rate_index = linear_terms[i, 0]
__pyx_t_73 = __pyx_v_i;
__pyx_t_74 = 0;
__pyx_v_rate_index = (*((int *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_linear_terms.data + __pyx_t_73 * __pyx_v_linear_terms.strides[0]) ) + __pyx_t_74 * __pyx_v_linear_terms.strides[1]) )));
+3767: rate = parameters[rate_index]
__pyx_t_8.data = __pyx_v_parameters.data;
__pyx_t_8.memview = __pyx_v_parameters.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
{
Py_ssize_t __pyx_tmp_idx = __pyx_v_rate_index;
Py_ssize_t __pyx_tmp_stride = __pyx_v_parameters.strides[0];
if ((0)) __PYX_ERR(0, 3767, __pyx_L1_error)
__pyx_t_8.data += __pyx_tmp_idx * __pyx_tmp_stride;
}
__pyx_t_8.shape[0] = __pyx_v_parameters.shape[1];
__pyx_t_8.strides[0] = __pyx_v_parameters.strides[1];
__pyx_t_8.suboffsets[0] = -1;
__PYX_XDEC_MEMVIEW(&__pyx_v_rate, 1);
__pyx_v_rate = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+3768: for m in range(M): # only fill in the upper triangular form
__pyx_t_18 = __pyx_v_M;
__pyx_t_19 = __pyx_t_18;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_m = __pyx_t_20;
+3769: B[reagent_index, m, reagent_index, m] += rate[m]*reagent[m]
__pyx_t_75 = __pyx_v_m;
__pyx_t_76 = __pyx_v_m;
__pyx_t_77 = __pyx_v_reagent_index;
__pyx_t_78 = __pyx_v_m;
__pyx_t_79 = __pyx_v_reagent_index;
__pyx_t_80 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_77 * __pyx_v_B.strides[0]) ) + __pyx_t_78 * __pyx_v_B.strides[1]) ) + __pyx_t_79 * __pyx_v_B.strides[2]) ) + __pyx_t_80 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_75 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_76 * __pyx_v_reagent.strides[0]) ))));
+3770: if product_index>-1:
__pyx_t_11 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_11) {
/* … */
}
}
+3771: B[product_index, m, product_index, m] += rate[m]*reagent[m]
__pyx_t_81 = __pyx_v_m;
__pyx_t_82 = __pyx_v_m;
__pyx_t_83 = __pyx_v_product_index;
__pyx_t_84 = __pyx_v_m;
__pyx_t_85 = __pyx_v_product_index;
__pyx_t_86 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_83 * __pyx_v_B.strides[0]) ) + __pyx_t_84 * __pyx_v_B.strides[1]) ) + __pyx_t_85 * __pyx_v_B.strides[2]) ) + __pyx_t_86 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_81 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_82 * __pyx_v_reagent.strides[0]) ))));
+3772: B[reagent_index, m, product_index, m] += -rate[m]*reagent[m]
__pyx_t_87 = __pyx_v_m;
__pyx_t_88 = __pyx_v_m;
__pyx_t_89 = __pyx_v_reagent_index;
__pyx_t_90 = __pyx_v_m;
__pyx_t_91 = __pyx_v_product_index;
__pyx_t_92 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_89 * __pyx_v_B.strides[0]) ) + __pyx_t_90 * __pyx_v_B.strides[1]) ) + __pyx_t_91 * __pyx_v_B.strides[2]) ) + __pyx_t_92 * __pyx_v_B.strides[3]) )) += ((-(*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_87 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_88 * __pyx_v_reagent.strides[0]) ))));
+3773: B[product_index, m, reagent_index, m] += -rate[m]*reagent[m]
__pyx_t_93 = __pyx_v_m;
__pyx_t_94 = __pyx_v_m;
__pyx_t_95 = __pyx_v_product_index;
__pyx_t_96 = __pyx_v_m;
__pyx_t_97 = __pyx_v_reagent_index;
__pyx_t_98 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_95 * __pyx_v_B.strides[0]) ) + __pyx_t_96 * __pyx_v_B.strides[1]) ) + __pyx_t_97 * __pyx_v_B.strides[2]) ) + __pyx_t_98 * __pyx_v_B.strides[3]) )) += ((-(*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_93 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_94 * __pyx_v_reagent.strides[0]) ))));
3774: # same transitions in Q classes
+3775: reagent = x[(reagent_index+nClassU)*M:((reagent_index+nClassU)+1)*M]
__pyx_t_8.data = __pyx_v_x.data;
__pyx_t_8.memview = __pyx_v_x.memview;
__PYX_INC_MEMVIEW(&__pyx_t_8, 0);
__pyx_t_9 = -1;
if (unlikely(__pyx_memoryview_slice_memviewslice(
&__pyx_t_8,
__pyx_v_x.shape[0], __pyx_v_x.strides[0], __pyx_v_x.suboffsets[0],
0,
0,
&__pyx_t_9,
((__pyx_v_reagent_index + __pyx_v_nClassU) * __pyx_v_M),
(((__pyx_v_reagent_index + __pyx_v_nClassU) + 1) * __pyx_v_M),
0,
1,
1,
0,
1) < 0))
{
__PYX_ERR(0, 3775, __pyx_L1_error)
}
__PYX_XDEC_MEMVIEW(&__pyx_v_reagent, 1);
__pyx_v_reagent = __pyx_t_8;
__pyx_t_8.memview = NULL;
__pyx_t_8.data = NULL;
+3776: for m in range(M): # only fill in the upper triangular form
__pyx_t_18 = __pyx_v_M;
__pyx_t_19 = __pyx_t_18;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_m = __pyx_t_20;
+3777: B[reagent_index+nClassU, m, reagent_index+nClassU, m] += rate[m]*reagent[m]
__pyx_t_99 = __pyx_v_m;
__pyx_t_100 = __pyx_v_m;
__pyx_t_101 = (__pyx_v_reagent_index + __pyx_v_nClassU);
__pyx_t_102 = __pyx_v_m;
__pyx_t_103 = (__pyx_v_reagent_index + __pyx_v_nClassU);
__pyx_t_104 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_101 * __pyx_v_B.strides[0]) ) + __pyx_t_102 * __pyx_v_B.strides[1]) ) + __pyx_t_103 * __pyx_v_B.strides[2]) ) + __pyx_t_104 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_99 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_100 * __pyx_v_reagent.strides[0]) ))));
+3778: if product_index>-1:
__pyx_t_11 = ((__pyx_v_product_index > -1L) != 0);
if (__pyx_t_11) {
/* … */
}
}
}
+3779: B[product_index+nClassU, m, product_index+nClassU, m] += rate[m]*reagent[m]
__pyx_t_105 = __pyx_v_m;
__pyx_t_106 = __pyx_v_m;
__pyx_t_107 = (__pyx_v_product_index + __pyx_v_nClassU);
__pyx_t_108 = __pyx_v_m;
__pyx_t_109 = (__pyx_v_product_index + __pyx_v_nClassU);
__pyx_t_110 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_107 * __pyx_v_B.strides[0]) ) + __pyx_t_108 * __pyx_v_B.strides[1]) ) + __pyx_t_109 * __pyx_v_B.strides[2]) ) + __pyx_t_110 * __pyx_v_B.strides[3]) )) += ((*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_105 * __pyx_v_rate.strides[0]) ))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_106 * __pyx_v_reagent.strides[0]) ))));
+3780: B[reagent_index+nClassU, m, product_index+nClassU, m] += -rate[m]*reagent[m]
__pyx_t_111 = __pyx_v_m;
__pyx_t_112 = __pyx_v_m;
__pyx_t_113 = (__pyx_v_reagent_index + __pyx_v_nClassU);
__pyx_t_114 = __pyx_v_m;
__pyx_t_115 = (__pyx_v_product_index + __pyx_v_nClassU);
__pyx_t_116 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_113 * __pyx_v_B.strides[0]) ) + __pyx_t_114 * __pyx_v_B.strides[1]) ) + __pyx_t_115 * __pyx_v_B.strides[2]) ) + __pyx_t_116 * __pyx_v_B.strides[3]) )) += ((-(*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_111 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_112 * __pyx_v_reagent.strides[0]) ))));
+3781: B[product_index+nClassU, m, reagent_index+nClassU, m] += -rate[m]*reagent[m]
__pyx_t_117 = __pyx_v_m;
__pyx_t_118 = __pyx_v_m;
__pyx_t_119 = (__pyx_v_product_index + __pyx_v_nClassU);
__pyx_t_120 = __pyx_v_m;
__pyx_t_121 = (__pyx_v_reagent_index + __pyx_v_nClassU);
__pyx_t_122 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_119 * __pyx_v_B.strides[0]) ) + __pyx_t_120 * __pyx_v_B.strides[1]) ) + __pyx_t_121 * __pyx_v_B.strides[2]) ) + __pyx_t_122 * __pyx_v_B.strides[3]) )) += ((-(*((double *) ( /* dim=0 */ (__pyx_v_rate.data + __pyx_t_117 * __pyx_v_rate.strides[0]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_reagent.data + __pyx_t_118 * __pyx_v_reagent.strides[0]) ))));
3782:
+3783: for m in range(M):
__pyx_t_1 = __pyx_v_M;
__pyx_t_12 = __pyx_t_1;
for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
__pyx_v_m = __pyx_t_13;
+3784: for i in range(nClassUwoN): # only fill in the upper triangular form
__pyx_t_18 = __pyx_v_nClassUwoN;
__pyx_t_19 = __pyx_t_18;
for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_19; __pyx_t_20+=1) {
__pyx_v_i = __pyx_t_20;
+3785: term = tau0 * parameters[test_freq[i], m] * parameters[test_pos[i], m] * x[m+M*i]
__pyx_t_123 = __pyx_v_i;
__pyx_t_124 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_123 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_125 = __pyx_v_m;
__pyx_t_126 = __pyx_v_i;
__pyx_t_127 = (*((int *) ( /* dim=0 */ (__pyx_v_test_pos.data + __pyx_t_126 * __pyx_v_test_pos.strides[0]) )));
__pyx_t_128 = __pyx_v_m;
__pyx_t_129 = (__pyx_v_m + (__pyx_v_M * __pyx_v_i));
__pyx_v_term = (((__pyx_v_tau0 * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_124 * __pyx_v_parameters.strides[0]) ) + __pyx_t_125 * __pyx_v_parameters.strides[1]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_127 * __pyx_v_parameters.strides[0]) ) + __pyx_t_128 * __pyx_v_parameters.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_129 * __pyx_v_x.strides[0]) ))));
+3786: B[i, m, i, m] += term
__pyx_t_130 = __pyx_v_i;
__pyx_t_131 = __pyx_v_m;
__pyx_t_132 = __pyx_v_i;
__pyx_t_133 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_130 * __pyx_v_B.strides[0]) ) + __pyx_t_131 * __pyx_v_B.strides[1]) ) + __pyx_t_132 * __pyx_v_B.strides[2]) ) + __pyx_t_133 * __pyx_v_B.strides[3]) )) += __pyx_v_term;
+3787: B[i+nClassU, m, i+nClassU, m] += term
__pyx_t_134 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_135 = __pyx_v_m;
__pyx_t_136 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_137 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_134 * __pyx_v_B.strides[0]) ) + __pyx_t_135 * __pyx_v_B.strides[1]) ) + __pyx_t_136 * __pyx_v_B.strides[2]) ) + __pyx_t_137 * __pyx_v_B.strides[3]) )) += __pyx_v_term;
+3788: B[nClass-1, m, nClass-1, m] += term
__pyx_t_138 = (__pyx_v_nClass - 1);
__pyx_t_139 = __pyx_v_m;
__pyx_t_140 = (__pyx_v_nClass - 1);
__pyx_t_141 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_138 * __pyx_v_B.strides[0]) ) + __pyx_t_139 * __pyx_v_B.strides[1]) ) + __pyx_t_140 * __pyx_v_B.strides[2]) ) + __pyx_t_141 * __pyx_v_B.strides[3]) )) += __pyx_v_term;
+3789: B[i, m, i+nClassU, m] -= term
__pyx_t_142 = __pyx_v_i;
__pyx_t_143 = __pyx_v_m;
__pyx_t_144 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_145 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_142 * __pyx_v_B.strides[0]) ) + __pyx_t_143 * __pyx_v_B.strides[1]) ) + __pyx_t_144 * __pyx_v_B.strides[2]) ) + __pyx_t_145 * __pyx_v_B.strides[3]) )) -= __pyx_v_term;
+3790: B[i+nClassU, m, i, m] -= term
__pyx_t_146 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_147 = __pyx_v_m;
__pyx_t_148 = __pyx_v_i;
__pyx_t_149 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_146 * __pyx_v_B.strides[0]) ) + __pyx_t_147 * __pyx_v_B.strides[1]) ) + __pyx_t_148 * __pyx_v_B.strides[2]) ) + __pyx_t_149 * __pyx_v_B.strides[3]) )) -= __pyx_v_term;
+3791: B[i, m, nClass-1, m] -= term
__pyx_t_150 = __pyx_v_i;
__pyx_t_151 = __pyx_v_m;
__pyx_t_152 = (__pyx_v_nClass - 1);
__pyx_t_153 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_150 * __pyx_v_B.strides[0]) ) + __pyx_t_151 * __pyx_v_B.strides[1]) ) + __pyx_t_152 * __pyx_v_B.strides[2]) ) + __pyx_t_153 * __pyx_v_B.strides[3]) )) -= __pyx_v_term;
+3792: B[nClass-1, m, i, m] -= term
__pyx_t_154 = (__pyx_v_nClass - 1);
__pyx_t_155 = __pyx_v_m;
__pyx_t_156 = __pyx_v_i;
__pyx_t_157 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_154 * __pyx_v_B.strides[0]) ) + __pyx_t_155 * __pyx_v_B.strides[1]) ) + __pyx_t_156 * __pyx_v_B.strides[2]) ) + __pyx_t_157 * __pyx_v_B.strides[3]) )) -= __pyx_v_term;
+3793: B[i+nClassU, m, nClass-1, m] += term
__pyx_t_158 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_159 = __pyx_v_m;
__pyx_t_160 = (__pyx_v_nClass - 1);
__pyx_t_161 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_158 * __pyx_v_B.strides[0]) ) + __pyx_t_159 * __pyx_v_B.strides[1]) ) + __pyx_t_160 * __pyx_v_B.strides[2]) ) + __pyx_t_161 * __pyx_v_B.strides[3]) )) += __pyx_v_term;
+3794: B[nClass-1, m, i+nClassU, m] += term
__pyx_t_162 = (__pyx_v_nClass - 1);
__pyx_t_163 = __pyx_v_m;
__pyx_t_164 = (__pyx_v_i + __pyx_v_nClassU);
__pyx_t_165 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_162 * __pyx_v_B.strides[0]) ) + __pyx_t_163 * __pyx_v_B.strides[1]) ) + __pyx_t_164 * __pyx_v_B.strides[2]) ) + __pyx_t_165 * __pyx_v_B.strides[3]) )) += __pyx_v_term;
}
+3795: term = tau0 * parameters[test_freq[nClassUwoN], m] * parameters[test_pos[nClassUwoN], m] * r[m]
__pyx_t_166 = __pyx_v_nClassUwoN;
__pyx_t_167 = (*((int *) ( /* dim=0 */ (__pyx_v_test_freq.data + __pyx_t_166 * __pyx_v_test_freq.strides[0]) )));
__pyx_t_168 = __pyx_v_m;
__pyx_t_169 = __pyx_v_nClassUwoN;
__pyx_t_170 = (*((int *) ( /* dim=0 */ (__pyx_v_test_pos.data + __pyx_t_169 * __pyx_v_test_pos.strides[0]) )));
__pyx_t_171 = __pyx_v_m;
__pyx_t_172 = __pyx_v_m;
__pyx_v_term = (((__pyx_v_tau0 * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_167 * __pyx_v_parameters.strides[0]) ) + __pyx_t_168 * __pyx_v_parameters.strides[1]) )))) * (*((double *) ( /* dim=1 */ (( /* dim=0 */ (__pyx_v_parameters.data + __pyx_t_170 * __pyx_v_parameters.strides[0]) ) + __pyx_t_171 * __pyx_v_parameters.strides[1]) )))) * (*((double *) ( /* dim=0 */ (__pyx_v_r.data + __pyx_t_172 * __pyx_v_r.strides[0]) ))));
+3796: B[nClass-1, m, nClass-1, m] += term
__pyx_t_173 = (__pyx_v_nClass - 1);
__pyx_t_174 = __pyx_v_m;
__pyx_t_175 = (__pyx_v_nClass - 1);
__pyx_t_176 = __pyx_v_m;
*((double *) ( /* dim=3 */ (( /* dim=2 */ (( /* dim=1 */ (( /* dim=0 */ (__pyx_v_B.data + __pyx_t_173 * __pyx_v_B.strides[0]) ) + __pyx_t_174 * __pyx_v_B.strides[1]) ) + __pyx_t_175 * __pyx_v_B.strides[2]) ) + __pyx_t_176 * __pyx_v_B.strides[3]) )) += __pyx_v_term;
}
3797:
3798:
+3799: self.B_vec = self.B.reshape((self.dim, self.dim))[(self.rows, self.cols)]
__pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.B), __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_177 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_177)) __PYX_ERR(0, 3799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_177); __pyx_t_178 = PyInt_FromSsize_t(__pyx_v_self->__pyx_base.dim); if (unlikely(!__pyx_t_178)) __PYX_ERR(0, 3799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_178); __pyx_t_179 = PyTuple_New(2); if (unlikely(!__pyx_t_179)) __PYX_ERR(0, 3799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_179); __Pyx_GIVEREF(__pyx_t_177); PyTuple_SET_ITEM(__pyx_t_179, 0, __pyx_t_177); __Pyx_GIVEREF(__pyx_t_178); PyTuple_SET_ITEM(__pyx_t_179, 1, __pyx_t_178); __pyx_t_177 = 0; __pyx_t_178 = 0; __pyx_t_178 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { __pyx_t_178 = PyMethod_GET_SELF(__pyx_t_2); if (likely(__pyx_t_178)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); __Pyx_INCREF(__pyx_t_178); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_2, function); } } __pyx_t_10 = (__pyx_t_178) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_178, __pyx_t_179) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_179); __Pyx_XDECREF(__pyx_t_178); __pyx_t_178 = 0; __Pyx_DECREF(__pyx_t_179); __pyx_t_179 = 0; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.rows)); PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self->__pyx_base.rows)); __Pyx_INCREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); __Pyx_GIVEREF(((PyObject *)__pyx_v_self->__pyx_base.cols)); PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->__pyx_base.cols)); __pyx_t_179 = __Pyx_PyObject_GetItem(__pyx_t_10, __pyx_t_2); if (unlikely(!__pyx_t_179)) __PYX_ERR(0, 3799, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_179); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; if (!(likely(((__pyx_t_179) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_179, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 3799, __pyx_L1_error) __Pyx_GIVEREF(__pyx_t_179); __Pyx_GOTREF(__pyx_v_self->__pyx_base.B_vec); __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.B_vec)); __pyx_v_self->__pyx_base.B_vec = ((PyArrayObject *)__pyx_t_179); __pyx_t_179 = 0;